2013-08-07 3 views
3

사용자 인터페이스를 일부 UI 클래스로 설정했습니다.일부 컨트롤에 대해 UIAppearance 프록시를 차단하는 방법

[[UIBarButtonItem appearance] setTintColor:someColor]; 
... 
[[UINavigationBar appearance] setBackgroundImage:someImage forBarMetrics:UIBarMetricsDefault]; 

그래서 나는 그들이 정의 모양을해야합니다 내 응용 프로그램에서 UIBarButtonItem's 또는 UINavigationBar's 객체를 생성 할 때.

그러나 일부 개체가 standart 모양 (프록시에 의해 정의되지 않음)을 갖기를 원하면 모든 속성을 수동으로 기본값으로 설정해야합니다.

그래서 질문 : 어떤 개체에 대해 UIAppearance을 사용하여 차단할 방법이 있습니까?

감사합니다.

답변

1

편집 : 아마 100 % 아니지만 원하는대로 할 수 있습니다 .WhenContainedIn을 사용할 수 있습니다.

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTintColor:[UIColor redColor]]; 
[[UIBarButtonItem appearanceWhenContainedIn:[UIToolbar class], nil] setTintColor:[UIColor yellowColor]]; 

이렇게하면 동작을 어느 정도 제어 할 수 있습니다.

속성을 nil로 설정하면 기본 모양이 사용됩니다. [self.navigationController.navigationBar setTintColor : nil];

+0

질문을 읽으십시오, 나는 수동으로 속성을 기본값으로 변경할 수 있지만 UIAppearance 프록시가 많은 값을 변경하면 모든 속성을 하나씩 되돌리려면 어리석은 것이라고 이해합니다. 그래서 일부 UI 컨트롤에 대해이 프록시를 차단하는 방법을 묻습니다. –