내 뷰 클래스 (UIView
의 자손)에 사용자 지정 모양 속성이 있습니다.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
그들은 이미 설정되어 값이 [[MyClass appearance] setFoo:…]
을 사용하여 설정하기 때문에 그 시점에서 유효하지 않습니다, 나는이 속성에 따라 뷰의 모양을 사용자 정의 할,하지만 난 초기화 안에 할 수 없어 layoutSubviews
이지만 뷰 사용자 정의를 수행하는 것은 좋지 않습니다. 일부 사용자 정의로 인해 layoutSubviews
이 다시 트리거되어 무한 루프가 발생할 수 있습니다.
사용자 지정을 수행하기에 좋은 점은 무엇입니까? 또는 모양 값을 적용하는 코드를 트리거하는 방법이 있습니까? 그것은 당신에게 문제를주고 경우
일단 사용자 지정 클래스가 할당되면 멤버의 속성에 항상 액세스하고 요구 사항에 따라 변경 한 다음 개체를 코드의 수정 된 정보와 함께 사용할 수 있다고 생각합니다. –
그냥, 외관 프록시 ('UIAppearance')를 통해 설정된 속성에 대해 이야기하고 있습니다. 이 값은 이니셜 라이저보다 나중에 설정됩니다. 속성 설정자에 중단 점을 설정하면 값이'[CALayer layoutSublayers]'에서 적용되었음을 알 수 있습니다. – zoul