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