int*_*ntl 11 navigation iphone sdk uinavigationcontroller
可能重复:
如何在iphone导航栏上添加背景图片?
我正在寻找一种方法来拥有一个自定义导航栏,并需要有一个自定义导航栏背景来实现这一目标.我正在四处寻找如何做到这一点,但无法找到解决方案.如果有人有解决方案,非常感谢帮助.
Mar*_*tin 14
从iOS5开始,您可以使用方法setBackgroundImage:forBarMetrics轻松设置自定义背景: 但您必须检查用户的手机是否具有正确的操作系统.
if ([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)])
{
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"texture.png"]
forBarMetrics:UIBarMetricsDefault];
}
Run Code Online (Sandbox Code Playgroud)
这是一个更好的解决方案,因为它在文档中.
Ada*_*dam 10
(安德鲁约翰逊回应的补充)
链接的Apple.com帖子包含3或4个不同的解决方案,其中大多数只有"一半"工作.我认为它们中最优雅/最有效的是这一个:
@implementation UINavigationBar (CustomImage)
- (void)drawRect:(CGRect)rect {
UIImage *image = [UIImage imageNamed: @"NavigationBar.png"];
[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end
Run Code Online (Sandbox Code Playgroud)
然而......将ObjC作为一个类别(应该是一个覆盖)并且它有自己的一些问题并不好.
因此,这里有一个更通用,更强大的解决方案:
http://samsoff.es/posts/customize-uikit-with-method-swizzling
您只需将一个子视图(UIImageView)添加到navaigationBar,它就是一个UIView子类.
UINavigationBar nb = [[UINavigationBar alloc]init];
[nb addSubview: foo];
[nb release];
Run Code Online (Sandbox Code Playgroud)
这是一篇论坛帖子,描述了如何将其包装到一个类别中:http://discussions.apple.com/thread.jspa?threadID = 1649012&tstart = 0
归档时间: |
|
查看次数: |
21731 次 |
最近记录: |