我的视图类(的后代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
再次触发,从而导致无限循环。
那么,执行自定义有什么好处呢?或者有没有办法触发应用外观值的代码?