不透明导航栏的背景图像在 iPhone 上呈现不正确 6

Background image of opaque navigation bar is rendered incorrectly on iPhone 6

当我用方法设置背景图片时

setBackgroundImage:forBarMetrics:

在iPhone6

上是这样渲染的

如果我将导航栏设置为 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

您可以通过将边缘设置为 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];
}

希望对您有所帮助。

享受编码!!