簡體   English   中英

如何為包括iPhone X在內的所有設備設置導航欄背景圖像?

[英]How to set navigation bar background image for all devices including iPhone X?

我正在嘗試為導航欄設置背景圖像。 它適用於所有其他設備,但在iPhone X中由於尺寸增加而無法正常工作。

使用此代碼:

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

如果您不想垂直拉伸圖像,只需使用2個背景圖像,一個用於所有設備,一個用於iPhone X(如果您的應用程序在縱向和橫向都可以使用,則必須使用2個以上....):

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM