Настройте панель навигации в iOS 5 - PullRequest
4 голосов
/ 17 октября 2011

В iOs4 я создал пользовательскую панель навигации, используя этот фрагмент

#import "UINavigationBar+CustomImage.h"


@implementation UINavigationBar (CustomImage)

- (void)drawRect:(CGRect)rect {
    // Drawing code
    UIImage *image = [[UIImage imageNamed:@"header.png"] retain];
    [image drawInRect:CGRectMake(0, 0,self.frame.size.width , self.frame.size.height)];
    [image release];
    }
@end

и это хорошо для ios4 в моем приложении. Теперь я хочу запустить это в iOs5, и проблема в том, что пользовательская панель навигации не отображается так, как я хочу.

Может ли кто-нибудь помочь мне создать пользовательскую панель навигации для iOs5.

Ответы [ 4 ]

4 голосов
/ 17 октября 2011

Вам нужно использовать внешний прокси.Но, убедитесь, что проверили, реагирует ли ToSelector на iOS4.Оставьте свой текущий метод на месте для iOS4, и он будет работать на обоих.

// not supported on iOS4
UINavigationBar *navBar = [purchaseNavController navigationBar];
if ([navBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)])
{
    // set globablly for all UINavBars
    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"brnlthr_nav.jpg"] forBarMetrics:UIBarMetricsDefault];

    // could optionally set for just this navBar
    //[navBar setBackgroundImage:...
}
3 голосов
/ 17 октября 2011

Та же проблема упоминается здесь: DrawRect UINavigationBar не вызывается в iOS 5.0 .Пожалуйста, проверьте это может помочь вам.

2 голосов
/ 11 февраля 2012

Просто поместите следующий код в делегат приложения, и он будет работать нормально, даже в ios5
Я поместил его в

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


// Create image for navigation background - portrait

UIImage *NavigationPortraitBackground = [[UIImage imageNamed:@"NavigationPortraitBackground"] 
                                             resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];

// Create image for navigation background - landscape

UIImage *NavigationLandscapeBackground = [[UIImage imageNamed:@"NavigationLandscapeBackground"] 
                                          resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];


// Set the background image all UINavigationBars

[[UINavigationBar appearance] setBackgroundImage:NavigationPortraitBackground 
                                   forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundImage:NavigationLandscapeBackground 
                                   forBarMetrics:UIBarMetricsLandscapePhone];
0 голосов
/ 04 декабря 2012

Проверьте версию iOS и установите изображение панели навигации

if ([[[UIDevice currentDevice] systemVersion] floatValue] <5.0) {} еще {<br> [[UINavigationBar Внешний вид] setBackgroundImage: [UIImage imageNamed: @ "Sample.png"] forBarMetrics: UIBarMetricsDefault]; }

...