2009-05-11 4 views
4

Я хотел бы заменить кнопку «Назад» и всю панель навигации в приложении iPhone с пользовательскими изображениями. Во-первых, возможно ли это? Во-вторых, если да, то как? Благодарю.Картинки для iPhone iPhone

+1

ли вы имеете в виду собственные изображения только с помощью кнопок на панели навигации, или весь нав бар (фон и т. д.)? –

+0

Меня тоже интересовали кнопки =) – Pasta

ответ

17

Этот код изменяет каждый UINavigationBar в вашем приложении.

@implementation UINavigationBar (CustomImage) 
- (void)drawRect:(CGRect)rect { 
    UIImage *image = [UIImage imageNamed: @"MyNavigationBar.png"]; 
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
} 
@end 
+0

Это должно быть отмечено как ответ. –

+0

Это отлично поработало, спасибо за отзыв – Robert

+0

@pierre хороший ответ, вы должны попросить позвонить супер, на случай, если вы хотите, например, сохранить обратные кнопки. –

0

Вы не сможете легко переопределить внешний вид панели навигации Apple, и даже если вы в состоянии это сделать, есть хорошие шансы, что это будет противоречить их политике избегать частных API. Тем не менее, довольно просто создать свою собственную навигационную панель, используя все пользовательские изображения. Это будет хорошо работать для простых одноразовых экранов, которым нужна панель навигации, но будет зверь для реализации на сложной иерархии на основе UINavigationController.

Редактировать: похоже, что люди смогли изменить фон, переопределив селектор -drawRect: Custom background for UINavigationBar?. Я не вижу никаких сообщений о том, были ли изменения одобрены для App Store.

+2

Я был свидетелем многих приложений, в которых такая практика получила одобрение для продажи в магазине. Apple все равно. –

0

Вы можете использовать этот код, чтобы изменить панель навигации изображения и панель вкладок изображения для пользовательских изображений:

if([[UINavigationBar class] respondsToSelector:@selector(appearance)]) {//iOS >=5.0 
    UIImage *image = [UIImage imageNamed:@"myCustomImage.png"]; 

    CGSize newSize = CGSizeMake(self.navigationController.navigationBar.frame.size.width, self.navigationController.navigationBar.frame.size.height); 
    UIGraphicsBeginImageContext(newSize); 
    [image drawInRect: CGRectMake(0, 0, self.navigationController.navigationBar.frame.size.width, self.navigationController.navigationBar.frame.size.height)]; 


    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    [self.navigationController.navigationBar setBackgroundImage:newImage forBarMetrics:UIBarMetricsDefault]; 

    [[UIToolbar appearance] setBackgroundImage:newImage forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault]; 
    [[UITabBar appearance] setBackgroundImage:newImage]; 
    [[UITabBar appearance] setSelectedImageTintColor:[UIColor cyanColor]]; 
} 
Смежные вопросы