У меня есть некоторые пользовательские свойства внешнего вида в моем классе вида (потомок UIView
). Я хочу настроить внешний вид вида в соответствии с этими свойствами, но я не могу сделать это внутри инициализатора, так как значения, установленные с помощью [[MyClass appearance] setFoo:…]
arent, действуют в этой точке:
@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
, что приводит к бесконечному циклу.
Итак, что хорошего для выполнения настроек? Или есть способ инициировать код, который применяет значения внешнего вида?