मेरे दृश्य वर्ग में कुछ कस्टम उपस्थिति गुण हैं (UIView
के वंशज)। मैं इन गुणों के अनुसार दृश्य स्वरूप को अनुकूलित करना चाहते हैं, लेकिन मैं ऐसा नहीं कर सकते प्रारंभकर्ता अंदर, के बाद से मूल्यों [[MyClass appearance] setFoo:…]
का उपयोग कर सेट उस बिंदु पर प्रभाव में नहीं हैं:मैं यूआईपीपीरेंस का उपयोग करके प्रॉपर्टी सेट का उपयोग शुरू कर सकता हूं?
@interface View : UIView
@property(strong) UIColor *someColor UI_APPEARANCE_SELECTOR;
@end
@implementation View
@synthesize someColor;
// Somewhere in other code before the initializer is called:
// [[View appearance] setSomeColor:[UIColor blackColor]];
- (id) initWithFrame: (CGRect) frame
{
self = [super initWithFrame:frame];
NSLog(@"%@", someColor); // nil
return self;
}
@end
वे पहले से ही में स्थापित कर रहे हैं layoutSubviews
, लेकिन दृश्य अनुकूलन करने के लिए यह एक अच्छा बिंदु नहीं है, क्योंकि कुछ अनुकूलन layoutSubviews
फिर से ट्रिगर कर सकते हैं, जिससे अंतहीन पाश हो जाता है।
तो, अनुकूलन करने के लिए एक अच्छा बिंदु क्या है? या क्या कोड को ट्रिगर करने का कोई तरीका है जो उपस्थिति मान लागू करता है? अगर यह आपको परेशानी दे रही है
मुझे लगता है कि एक बार कस्टम क्लास आवंटित किया गया है, सदस्य के गुणों को हमेशा आवश्यकता के अनुसार एक्सेस किया जा सकता है और फिर ऑब्जेक्ट को कोड में संशोधित जानकारी के साथ उपयोग किया जा सकता है। –
बस यह सुनिश्चित करने के लिए, मैं उपस्थिति प्रॉक्सी ('UIAppearance') के माध्यम से निर्धारित गुणों के बारे में बात कर रहा हूं। इन मानों को प्रारंभकर्ता के मुकाबले कहीं भी सेट किया गया है। अगर मैं प्रॉपर्टी सेटर पर ब्रेकपॉइंट सेट करता हूं, तो मैं देख सकता हूं कि मान '[कैलियर लेआउट सब्लेयरर्स]' से लागू होते हैं। – zoul