пользовательский uinavigation bar в iOS5
У меня возникли проблемы после обновления до Xcode 4.2. До этого я использовал следующие коды для создания пользовательской панели навигации, но когда я использую iPhone 5.0 simulator, это не удается, тогда как в iPhone 4.2 simulator это было нормально.
Могу ли я узнать, в чем проблема и как я могу это исправить?
Большое спасибо
@implementation UINavigationBar (UINavigationBarCustomDraw)
- (void) drawRect:(CGRect)rect {
[self setTintColor:[UIColor colorWithRed:0.4f
green: 0.0f
blue:0.4f
alpha:1]];
if ([self.topItem.title length] > 0 && ![self.topItem.title isEqualToString:@""])
{
[[UIImage imageNamed:@"purple.jpg"] drawInRect:rect];
}
}
@end
2 ответа:
Если вам нужен пользовательский UINavigationbar с некоторым изображением, поэтому вам нужно поместить этот код в rootViewController, который является первым представлением стека навигации (A > B > C, поэтому вы должны поместить его в A)
- (void)viewDidLoad { [super viewDidLoad]; [[UIDevice currentDevice] systemVersion]; if ([[[UIDevice currentDevice] systemVersion] floatValue] > 4.9) { //iOS 5 UIImage *toolBarIMG = [UIImage imageNamed: @"purple.jpg"]; if ([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) { [[UINavigationBar appearance] setBackgroundImage:toolBarIMG forBarMetrics:UIBarMetricsDefault]; } } else { //iOS 4 [self.navigationController.navigationBar insertSubview:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"purple.jpg"]] autorelease] atIndex:0]; } } }
Не делай этого, как Джоджас. Это использование внутренних сведений о классе, которые могут измениться с обновлением iOS. Используйте API внешнего вида на iOS 5.
Ищите здесь что-то, что работает как с iOS 5, так и с iOS 4, пользовательский фон UINavigationBar