Mam pewne niestandardowe właściwości wyglądu w mojej klasie widoku (potomek UIView
). Chcę dostosować wygląd widok według tych właściwości, ale nie mogę tego zrobić wewnątrz inicjatora, ponieważ wartości ustawiane za pomocą [[MyClass appearance] setFoo:…]
nie są w istocie w tym punkcie:Kiedy mogę zacząć korzystać z właściwości ustawionych za pomocą UIAppearance?
@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
już są ustawione w layoutSubviews
, ale nie jest to dobry punkt do wykonywania dostosowań widoku, ponieważ niektóre dostosowania mogą ponownie uruchomić layoutSubviews
, prowadząc do nieskończonej pętli.
Jaki jest dobry punkt do przeprowadzenia dostosowań? Czy istnieje sposób wyzwalania kodu, który stosuje wartości wyglądu?
myślę raz klasa zwyczaj została przydzielona, właściwości członka może być zawsze dostępny i zmieniane zgodnie z wymaganiami, a następnie obiekt może być używany ze zmodyfikowanym informacji zawartych w kodzie. –
Tylko po to, aby się upewnić, że mówię o właściwościach ustawionych przez serwer proxy wyglądu ('UIAppearance'). Wartości te są ustawiane gdzieś później niż w inicjalizatorze. Jeśli ustawię punkt przerwania na selektorze właściwości, widzę, że wartości są stosowane od '[CALayer layoutSublayers]'. – zoul