ビュークラス(の子孫)にいくつかのカスタム外観プロパティがあります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
再度トリガーされて無限ループが発生する可能性があるため、ビューのカスタマイズを実行するのは適切ではありません。
では、カスタマイズを実行するための良い点は何ですか?または、外観値を適用するコードをトリガーする方法はありますか?