Когда я смогу начать использовать свойства, установленные с помощью UIAppearance?

У меня есть некоторые настраиваемые свойства внешнего вида в моем классе представления (потомок 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, что приведет к бесконечному циклу.

Итак, что хорошего в настройке? Или есть способ запустить код, который применяет значения внешнего вида?

10
задан zoul 24 May 2012 в 12:35
поделиться