2016-03-29 5 views
7

मैंने दो प्रकार के कार्यान्वयन के बारे में सोचा है; प्रदर्शन, पठनीयता और रखरखाव के मामले में उनमें से कौन सा आपकी राय में बेहतर है?स्विफ्ट प्रोजेक्ट में एक कस्टम यूआईसीओलर पेश करने का सबसे अच्छा तरीका क्या है?

  1. इस

    extension UIColor { 
        class func myColor() -> UIColor { 
         return UIColor(red: 128/255, green: 102/255, blue: 0, alpha: 1) 
        } 
    } 
    
  2. तरह UIColor का ही विस्तार बनाएँ संरचना बनाएँ:

    struct Colors { 
        static let myColor = UIColor(red: 255/255, green: 102/255, blue: 0, alpha: 1) 
    } 
    
+4

परिभाषित करें "बेहतर" ... – Moritz

+0

मैं ** तरह ** 2 :) – onmyway133

+0

पहला तरीका स्पष्ट रूप से, निष्पक्ष, बेहतर है। : डी –

उत्तर

13

उत्तर: एक्सटेंशन, मेरी पेशेवर राय में।

इसके बारे में सोचें; आप दर्शन में हैं, UIColor द्वारा प्रदान किए गए रंगों की श्रृंखला को 'विस्तारित' करते हैं। बशर्ते आपका रंग का नाम अलग हो और नया फ़ंक्शन ऐप्पल के विधि नामकरण प्रोटोकॉल (यानी <color name>Color) का पालन करता है, UIColor विस्तारित लगता है। एक या दो नए रंग (मेरी राय में) एक संपूर्ण समर्पित struct वारंट नहीं करते हैं।


बोनस जवाब: जहां एक struct (या enum) एक अच्छा फिट हो सकता है?

  • मानक रंग के लिए अपने अनुप्रयोग बलों प्रतिस्थापन (यानी कस्टम 'प्राथमिक' रंग)
  • अपने अनुप्रयोग विशेष रूप से थीम पर आधारित होने के लिए/अनुकूलित डिज़ाइन किया गया है, तो यह अच्छा हो सकता है एक enum है, के रूप में काम करने के लिए तो उपलब्ध विकल्पों के लिए एक ठोस सूची।
  • यदि आप रंगों के लिए मानक नामों (sharkBlueColor, किसी को भी नहीं सोच सकते हैं?)।
  • यदि आपका ऐप विशेष रूप से ड्राइंग/पेंटिंग के लिए है (जिस स्थिति में 'पैलेट' निर्माण अच्छा विचार हो सकता है)।

... सूची जारी है। एक स्विफ्ट डेवलपर के रूप में परिपक्व होने के रूप में आपको खुद को समझने और निर्णय लेने के लिए सीखना होगा!

+1

सहमत हैं, यह खोज को बहुत आसान बनाता है जब तक कि आपके पास इसे छिपाने का कोई कारण न हो - उदा। रंगों की एक विस्तृत सूची के साथ रंग सेट की एक श्रृंखला - इस मामले में शायद एक enum – sketchyTech

1

मैं इस

enum AppColor: UInt32 { 

    case DarkBlue = 0x00437C 
    case LightBlue = 0x7CCEF0 

    var color: UIColor { 
     return UIColor(hex: rawValue) 
    } 

} 

इस तरह यह xib/storyboard में एक ही रंग का पुन: उपयोग करने के लिए है क्योंकि मैं कॉपी/पेस्ट के लिए तैयार हेक्स मान है आसान है के लिए enums का उपयोग करें। और यह भी कम कोड हेक्स मान से रंग बनाने के लिए नए रंग

को परिभाषित करने के लिए आवश्यक मैं UIColor विस्तार प्रयोग किया है:

extension UIColor { 

    public convenience init(hex: UInt32) { 
     let mask = 0x000000FF 

     let r = Int(hex >> 16) & mask 
     let g = Int(hex >> 8) & mask 
     let b = Int(hex) & mask 

     let red = CGFloat(r)/255 
     let green = CGFloat(g)/255 
     let blue = CGFloat(b)/255 

     self.init(red:red, green:green, blue:blue, alpha:1) 
    } 

} 
+1

'UIColor (हेक्स: rawValue) 'जाने का तरीका है? https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIColor_Class/ –

संबंधित मुद्दे

 संबंधित मुद्दे