2013-11-14 3 views
15

iOS7 앱에서 UINavigationBar 모양을 변경하려고합니다. 다음 집에 눌러 다시 제시하고 나의 새로운 모습입니다, 나는 그것이 표준 iOS7에의 탐색 모음입니다있는 UITableViewController을 제시 처음iOS 7 UINavigationBar 모양이 처음으로 작동하지 않습니다 ...

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    m_sNumberToCall = @""; 

    UIBarButtonItem * btn = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"IconHome.png"] style:UIBarButtonItemStyleBordered target:self action:@selector(btHomeTouched:)]; 
    self.navigationItem.leftBarButtonItem = btn; 

    self.navigationController.navigationBar.translucent = YES; 


    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"TVCNavBack.png"] forBarMetrics:UIBarMetricsDefault]; 

    NSShadow * shadow = [[NSShadow alloc] init]; 
    shadow.shadowColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8]; 
    shadow.shadowOffset = CGSizeMake(0, 1); 
    [[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: 
                  [UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0], 
                  NSForegroundColorAttributeName, 
                  shadow, 
                  NSShadowAttributeName, 
                  [UIFont fontWithName:@"Helvetica-Bold" size:21.0], 
                  NSFontAttributeName, 
                  nil]]; 
} 

을하지만 : 나는 다음을 수행하고있다.

왜 처음에는 작동하지 않는 아이디어가 있습니까?

+0

viewDidAppear에서 코드를 이동하려고 시도합니다. – Ilario

+0

나는 그것을 시도했지만 아무 것도 시도하지 않았으며 viewWillAppear에서도 시도했습니다. – LilMoke

+1

샘 문제가 생길 수있는 다른 사람들을 위해이 코드를 [[UINavigationBar appearance] setBa ...에서 this : [self.navigationController.navigationBar setBa ...] 및 setTitleTextAttributes 행으로 변경했습니다. 찾을 답변 : http://stackoverflow.com/questions/17361500/how-to-set-navigation-bar-image-ins-ios-7 – LilMoke

답변

26

모양을 변경하지 않고 탐색 바를 직접 변경하십시오. 모양은 미래 인스턴스에만 영향을 미치지 만 이미 생성 된 인스턴스에는 영향을 미치지 않습니다.

변경 :

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"TVCNavBack.png"] forBarMetrics:UIBarMetricsDefault]; 

에 :

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"TVCNavBack.png"] forBarMetrics:UIBarMetricsDefault]; 
+6

실제로 동일한 문제가 있으며 내 탐색 컨트롤러 전에 모양을 설정합니다. 인스턴스화됩니다 ... –

+0

그건 많이 설명합니다! – kokluch

+0

실제 해결 방법은 아래 @ fabf98dev입니다. navigationController를 사용할 필요가 없으므로 첫 번째 viewController를 표시하기 전에이 행 (UINavigationBar.Appear ..)을 호출해야합니다. –

2

대답 만 배경 이미지와 함께 당신을 도와줍니다 아닌 title text attributes을 가진 전에.

당신은 당신의 코드를 변경할 필요는 없지만 당신이 할 일은 당신의 AppDelegate.m 파일에

applicationDidFinishLaunchingWithOptions

로 이동합니다.