我想用自定义图片替换iPhone应用程序中的后退按钮和整个导航栏。首先,这可能吗?第二,如果是这样,怎么样?感谢。
答案 0 :(得分: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
答案 1 :(得分:0)
您将无法轻松覆盖Apple导航栏的外观,即使您能够,也很有可能违反其避免私有API的政策。但是,使用所有自定义图像创建自己的外观相似的导航栏非常简单。这对于需要导航栏的简单一次性屏幕很有用,但是在基于UINavigationController的复杂层次结构上实现它将是一种野兽。
修改:看起来人们可以通过覆盖-drawRect
选择器来更改背景:Custom background for UINavigationBar? 。我没有看到任何关于这些更改是否已获得App Store批准的报告。
答案 2 :(得分: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]];
}