不透明导航栏的背景图像在 iPhone 6 上渲染不正确
Posted
技术标签:
【中文标题】不透明导航栏的背景图像在 iPhone 6 上渲染不正确【英文标题】:Background image of opaque navigation bar is rendered incorrectly on iPhone 6 【发布时间】:2015-04-23 08:48:53 【问题描述】:当我用方法设置背景图片时
setBackgroundImage:forBarMetrics:
在 iPhone 6 上是这样渲染的
如果我将导航栏设置为translucent
,它会正常拉伸。
@implementation OHCNavigationBar
- (id)initWithCoder:(NSCoder *)aDecoder
if(self = [super initWithCoder:aDecoder])
[self setupGradient];
return self;
- (instancetype)initWithFrame:(CGRect)frame
if(self = [super initWithFrame:frame])
[self setupGradient];
return self;
- (void)setupGradient
UIImage *gradientImage = [UIImage imageNamed:@"navigationBarBackground.png"];
[self setBackgroundImage:gradientImage forBarMetrics:UIBarMetricsDefault];
@end
【问题讨论】:
【参考方案1】:您可以通过将边缘设置为0来设置UINavigationBar
不重复模式的背景图像。
UIImage *gradientImage32 = [[UIImage imageNamed:@"bkg_top_header_default.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[UINavigationBar appearance] setBackgroundImage:gradientImage32
forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setBackgroundImage:gradientImage32 forBarMetrics:UIBarMetricsDefault];
更新 1:
- (void)setupGradient
UIImage *gradientImage = [[UIImage imageNamed:@"navigationBarBackground.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0) resizingMode:UIImageResizingModeStretch];
[self setBackgroundImage:gradientImage forBarMetrics:UIBarMetricsDefault];
希望对您有所帮助。
享受编码!
【讨论】:
@aterite 这对你有帮助吗? 不幸的是,它没有改变。我不知道,我应该设置其他插图吗? 你能贴出你的代码来设置背景图片吗,这样我可以帮你更多。 谢谢,我添加了 resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0) resizingMode:UIImageResizingModeStretch 你的问题解决了吗?如果没有,那么你应该尝试像 UIEdgeInsetsMake(0, 160, 0, 160) 这样的边缘插入,在我之前的答案中进行了更新。以上是关于不透明导航栏的背景图像在 iPhone 6 上渲染不正确的主要内容,如果未能解决你的问题,请参考以下文章