1

我想设置完整的图像UINavigationBar,为此我有:

@2x image (640 x 128)
@3x image (960 x 192)

下面的屏幕截图是问题:

在此处输入图像描述

请参考这个黄色轮廓。这部分正在切割。

我写了这段代码来添加图像:

 override func viewDidLoad() {
        super.viewDidLoad()                   
self.navigationController?.navigationBar.setBackgroundImage(UIImage(named:"nav-bar-b"),for: .any, barMetrics: .default)
        }

请帮助我提供更好的解决方案。

4

4 回答 4

1

我已经像这样解决了这个问题:-

根据设备大小获取导航图像,否则会破坏导航图像。

iPhone 6P => //1242 × 191 像素
iPhone 6 = > //750 × 128 像素
iPhone 5 = > //640 × 128 像素

func SetNavigationImage()
    {
        var navBackgroundImage:UIImage!

        if IS_IPHONE_6P
        {
            navBackgroundImage = UIImage(named: "nav-bar-b_1242×191") //1242 × 191 pixels
        }else if IS_IPHONE_6
        {
            navBackgroundImage = UIImage(named: "nav-bar-b_750×128")//750 × 128 pixels
        }
        else
        {
            navBackgroundImage = UIImage(named: "nav-bar-b_640×128")//640 × 128 pixels
        }
        UITabBar.appearance().layer.borderWidth = 0.0
        UITabBar.appearance().clipsToBounds = true
        UINavigationBar.appearance().isTranslucent = false
        UIApplication.shared.statusBarStyle = UIStatusBarStyle.lightContent
        UINavigationBar.appearance().setBackgroundImage(navBackgroundImage, for:.default)
        UINavigationBar.appearance().shadowImage = UIImage()
        UINavigationBar.appearance().tintColor = .white
    }


var IS_IPHONE_4_OR_LESS =  UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH < 568.0
var IS_IPHONE_5 = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 568.0
var IS_IPHONE_6 = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 667.0
var IS_IPHONE_6P = UIDevice.current.userInterfaceIdiom == .phone && ScreenSize.SCREEN_MAX_LENGTH == 736.0
于 2017-04-25T06:27:10.633 回答
0

在 viewDidLoad 中尝试此代码

UINavigationBar.appearance().setBackgroundImage(UIImage(named: "image")!.resizableImage(withCapInsets: UIEdgeInsets.zero, resizingMode: .stretch), for: .default)

于 2017-04-25T06:28:45.493 回答
0

1.self.navigationController.navigationBar.setBackgroundImage(图像,forBarMetrics:.Default)

2.导航栏高度由44点(88像素)改为64点(128像素)。

于 2017-04-25T06:33:00.907 回答
0

创建一个可调整大小的图像。因此图像将垂直和水平缩放以适应包括状态栏在内的导航栏。

对于斯威夫特 3:

if let image = UIImage(named: "imagefile") {
   let backgroundImage = image.resizableImage(withCapInsets: UIEdgeInsets.zero, resizingMode: .stretch)
   self.navigationController?.navigationBar.setBackgroundImage(backgroundImage, for: .default)
}

或者

if let image = UIImage(named: "imagefile") {
   let backgroundImage = image.resizableImage(withCapInsets: UIEdgeInsets.zero, resizingMode: .stretch)
   UINavigationBar.appearance().setBackgroundImage(backgroundImage, for: .default)
}
于 2017-08-04T15:30:33.803 回答