2013-07-30 4 views
0

Есть ли способ изменить фоновое изображение навигационной панели на основе ориентации? Я пробовал использовать методы в делегате приложения, например:изменить фоновое изображение навигационной панели на основе ориентации

-(void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame 

{ 

UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation; 

if(orientation == (UIInterfaceOrientationMaskPortrait)||orientation==(UIInterfaceOrientationMaskPortraitUpsideDown)){ 

    UIImage *myImage = [UIImage imageNamed:@"borderP.png"]; 
    UIImage * imageBottom = [UIImage imageNamed:@"bottomP.png"]; 
    [[UIToolbar appearance] setBackgroundImage:imageBottom forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault]; 
    [[UINavigationBar appearance] setBackgroundImage:myImage forBarMetrics:UIBarMetricsDefault]; 
    [[UIToolbar appearance] setBackgroundImage:imageBottom forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault]; 
    NSLog(@"******P******"); 
} 

else if(orientation == (UIInterfaceOrientationMaskLandscapeLeft||orientation== UIInterfaceOrientationMaskLandscapeRight)){ 


    UIImage *myImage = [UIImage imageNamed:@"borderL.png"]; 
    UIImage * imageBottom = [UIImage imageNamed:@"borderL.png"]; 
    [[UIToolbar appearance] setBackgroundImage:imageBottom forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault]; 
    [[UINavigationBar appearance] setBackgroundImage:myImage forBarMetrics:UIBarMetricsDefault]; 
    [[UIToolbar appearance] setBackgroundImage:imageBottom forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault]; 
    NSLog(@"******L********"); 
} 

} 

, но задняя поверхность изображения не меняется.

Любые советы?

+0

спасибо за очистку, что до, им пытаются изменить существующий один – user2515907

ответ

0

Прокси-сервер внешнего вида применяется только к новым экземплярам. Чтобы изменить экземпляр, который уже существует, вам необходимо напрямую позвонить setBackgroundImage:forToolbarPosition:barMetrics:.

+0

попытался это, но он не работает, как вы предложили 'UINavigationBar * NavBar = self.navigationController.navigationBar;' ' UIImage * изображение = [UIImage imageNamed: @ "borderL.png"]; [navBar setBackgroundImage: image forBarMetrics: UIBarMetricsDefault]; ' – user2515907

+0

Вы получаете правильные сообщения журнала P и L? Являются ли 'navBar' и' image' не-ноль? – jszumski

+0

сообщения журналов печатаются, но панель навигации равна nil – user2515907

Смежные вопросы