我的视图类(继承自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
)设置的属性。这些值在初始化程序之后的某个地方设置。如果我在属性设置器上设置断点,我可以看到这些值是从[CALayer layoutSublayers]
应用的。 - zoul