2009-10-28 11 views
5

मुझे आश्चर्य है कि अगर वहाँ आदेश मैन्युअल रूप से उदाहरण के लिए विभिन्न स्थानों पर एक ही रंग की स्थापना से बचने के लिए, इंटरफ़ेस बिल्डर में स्थिरांक का उपयोग करने के लिए एक रास्ता है (यह एक बहुत ही कठिन कार्य कभी कभी हो सकता है ...)इंटरफेस बिल्डर और कोड के बीच स्थिरांक कैसे साझा करें?

वर्तमान में मैं सेट कोड में रंग और रंग को सेट करने के लिए परिभाषित करें, लेकिन स्पष्ट रूप से आईबी #define का उपयोग नहीं कर सकता ...

उत्तर

-1

मुझे लगता है कि ऐसा करने का सबसे आसान तरीका यूआईसीओलर वर्ग पर एक श्रेणी बनाना और बनाना होगा उस पर एक वर्ग विधि।

@interface UIColor (CustomColors) 
+ (UIColor *)myCustomColor; 
@end 

प्लेस एक कार्यान्वयन फ़ाइल में इस (उदाहरण के लिए UIColor + CustomColors.m)

@implementation UIColor (CustomColors) 
+ (UIColor *)myCustomColor 
{ 
    return [UIColor colorWithRed:0.2 green:0.5 blue:0.2 alpha:1.0]; 
} 
@end 

:

एक हेडर फाइल (जैसे UIColor + CustomColors.h) में रखें इस उदाहरण के लिए:

... 
self.view.backgroundColor = [UIColor myCustomColor]; 
... 

देखें: तो फिर तुम इतनी तरह अपने कोड में कहीं भी वर्ग विधि का उपयोग किया अधिक जानकारी के लिए।

वैकल्पिक रूप से, आप सिस्टम रंग पैलेट के माध्यम से रंग के स्विच को सहेज सकते हैं। ऐसा करने के लिए आप बस सिस्टम रंग पैलेट को कॉल करें, एक रंग का चयन करें और इसे रंगों के ग्रिड में खींचें।

ये रंग अब आपके द्वारा बनाए गए प्रत्येक इंटरफ़ेस बिल्डर दस्तावेज़ में उपलब्ध नहीं हैं, लेकिन कोई भी एप्लिकेशन जो सिस्टम रंग पैलेट का उपयोग करता है।

color palette http://img.skitch.com/20091030-dhh3tnfw5d8hkynyr7e5q3amwg.png

+0

धन्यवाद है आप के लिए जवाब। दरअसल, मुझे कोड में नहीं, आईबी में रंग सेट करना पसंद होता था (जिसका अर्थ है कि मैं self.backgroundColor = mycolor से बचना चाहता हूं)। लेकिन अगर मैं कलर पैलेट से कस्टम रंग का उपयोग करता हूं, और यदि मैं भविष्य में संशोधित करना चाहता हूं तो उदाहरण के लिए मेरे रंग के नीले रंग का प्रतिशत, मुझे अभी भी आईबी में कस्टम रंग बदलना होगा प्रयोग किया जाता है ... मैं इस समय के लिए अपना # डिफाईन समाधान रख रहा हूं, यह मुझे थकाऊ रिफैक्टरिंग समय बचाता है .... – Unfalkster

0

मैं विभिन्न नियंत्रण उपवर्गीकरण पूरे एप्लिकेशन में एक ही शैली को सुनिश्चित करने के द्वारा इस समस्या के काम किया है। दोष यह है कि आप इंटरफेस बिल्डर में केवल एक वायरफ्रेम में शैली नहीं देख सकते हैं।

उदाहरण के लिए मैं एक

@interface MyButton : UIButton 
@end 


@implementation MyButton 

-(void) initialize{ 
self.backgroundColor = [UIColor MyButonColor]; // Using a category on UIColor 
} 

- (id)initWithFrame:(CGRect)frame{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     [self initialize]; 
    } 
    return self; 
} 

- (id)initWithCoder:(NSCoder *)decoder { 
    if (self = [super initWithCoder:decoder]) { 
     [self initialize]; 
    } 
    return self; 
} 
संबंधित मुद्दे