0
내 모든보기의 탐색 모음 변경하려면 아래의 코드를 사용하고

:`Application : didFinishLaunchingWithOptions :`를 사용하지 않고 어떻게 탐색 바를 바꿀 수 있습니까?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 

UIImage *gradientImage44 = [[UIImage imageNamed:@"clear_navigation_bar_texture_44"] 
          resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)]; 
[[UINavigationBar appearance] setBackgroundImage:gradientImage44 forBarMetrics:UIBarMetricsDefault]; 
} 

하지만 지금은 네비게이션 바는 사용자 기반이 선택하는 다른 이미지로 변경할 수 있도록하려면를 ' 테마 '그들은 그들이 애플 리케이션을 원한다. 문제는 앱을로드 할 때만 작동하기 때문에 여기에 코드를 넣을 수 없습니다. 그래서 코드를 별도의 메서드로 만들고 didFinishLaunching ... 메서드에서 호출하고 사용자가 테마를 변경할 때 호출하는 viewController 메서드를 생각했습니다. 내 질문은 그때 어떻게하면 좋을까요, 아니면 더 나은 방법이 있습니까?

감사합니다.

답변

2

당신은 애플 리케이션 대리인에서 테마를 설정할 필요가 없습니다; 어디에서나 원하는대로 할 수 있습니다 (대화 형으로 만들 수도 있습니다). 주의해야 할 점은 UIAppearance을 통해 설정된 속성은 새로운보기로만 인스턴스화된다는 것입니다. 업데이트가 필요한 기존보기가있는 경우 수동으로 업데이트해야합니다. 예를 들면 다음과 같습니다.

UIImage *gradientImage44 = [[UIImage imageNamed:@"clear_navigation_bar_texture_44"] resizableImageWithCapInsets:UIEdgeInsetsZero]; 
[[UINavigationBar appearance] setBackgroundImage:gradientImage44 forBarMetrics:UIBarMetricsDefault]; 
[[self navigationController] navigationBar] setBackgroundImage:gradientImage44 forBarMetrics:UIBarMetricsDefault]; 
0

Settings.app에서 테마를 변경하고 있습니까? 그냥 귀하의 테마 코드를 귀하의 응용 프로그램 대리인에 -applicationWillEnterForeground: 넣어 ...

+0

또한 탐색 막대가 더 짧기 때문에 와이드 스크린 모드에서 깨질 수 있습니다. 아마도 눈에 띄지 않을 것입니다. – nielsbot