如何设置导航栏的背景图像,包​​括iPhone X的所有设备?

如何设置导航栏的背景图像,包​​括iPhone X的所有设备?

问题描述:

我想设置背景图片的导航栏。它的工作对所有其他设备,但在iPhone X它不工作,由于增加的大小。如何设置导航栏的背景图像,包​​括iPhone X的所有设备?

+0

“不工作” ......怎么样?给我们一些细节。它怎么不起作用? – PeejWeej

如果你不想垂直方向上拉伸你的形象,如果同时在纵向和横向您的应用程序的工作,你必须使用超过2只使用2张背景图片,一个为所有的设备和一个用于iPhone X(.. ..):

ObjC:

if (MAX([[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height) == 812.0) { 
    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationBar_X.png"] 
             forBarMetrics:UIBarMetricsDefault]; 

} 
else 
    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationBar.png"] 
            forBarMetrics:UIBarMetricsDefault]; 

斯威夫特:

if max(UIScreen.main.bounds.size.width, UIScreen.main.bounds.size.height) == 812.0 { 
     UINavigationBar.appearance().setBackgroundImage(UIImage(named: "navigationBar_X.png"), for: .default) 
    } 
    else { 
     UINavigationBar.appearance().setBackgroundImage(UIImage(named: "navigationBar.png"), for: .default) 
    } 

如果你的图像看起来不错垂直拉伸:

ObjC:

[[UINavigationBar appearance] setBackgroundImage:[[UIImage imageNamed:@"navigationBar.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0.0, 0.0, 0.0, 0.0) resizingMode:UIImageResizingModeStretch] forBarMetrics:UIBarMetricsDefault]; 

斯威夫特:

UINavigationBar.appearance().setBackgroundImage(UIImage(named: "navigationBar.png")!.resizableImage(withCapInsets: UIEdgeInsets(top: 0, left: 0, bottom: 0 ,right: 0), resizingMode: .stretch), for: .default) 

使用此代码:

self.navigationBar.setBackgroundImage(UIImage(named: "navbar background").resizableImage(withCapInsets: UIEdgeInsets(top: 0, left: 0, bottom: 0 ,right: 0), resizingMode: .stretch), for: .default)