ios – 如何更改UINavigationBar底部边框的颜色?

前端之家收集整理的这篇文章主要介绍了ios – 如何更改UINavigationBar底部边框的颜色?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我阅读了许多主题,但没有一个在最新版本的 Swift的清晰,一致的答案中解决了这个问题.

例如,this question的最佳答案表明UINavigationBar.appearance().setShadowImage().但是,最新版本的swift中不存在这样的方法.

我不想隐藏底部边框.我只是想改变颜色.

另外,能够改变高度会很棒,但我知道我在一个问题上问得太多了.

编辑:我创建了一个2×1像素图像并将其设置为shadowImage,但边框保持不变:

UINavigationBar.appearance().barTintColor = UIColor.whiteColor()
UINavigationBar.appearance().shadowImage = UIImage(named: "border.jpg") //in my AppDelegate,for global appearance

这是图像;它真的很小:

解决方法

SWIFT 2.x:

出于方便,我扩展了UIImage()以允许我基本上将它用作下面代码的颜色.

extension UIImage {
    class func imageWithColor(color: UIColor) -> UIImage {
        let rect = CGRectMake(0,1.0,0.5)
        UIGraphicsBeginImageContextWithOptions(rect.size,false,0)
        color.setFill()
        UIRectFill(rect)
        let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return image
    }
}

接下来,您需要在代码添加以下行,以调整viewController的UINavigationBar的阴影图像或此实例中的颜色.

// Sets Bar's Background Image (Color) //
self.navigationController?.navigationBar.setBackgroundImage(UIImage.imageWithColor(UIColor.blueColor()),forBarMetrics: .Default)
// Sets Bar's Shadow Image (Color) //
self.navigationController?.navigationBar.shadowImage = UIImage.imageWithColor(UIColor.redColor())

SWIFT 3.x / 4.x:

扩展代码

extension UIImage {
    class func imageWithColor(color: UIColor) -> UIImage {
        let rect = CGRect(x: 0.0,y: 0.0,width: 1.0,height: 0.5)
        UIGraphicsBeginImageContextWithOptions(rect.size,0.0)
        color.setFill()
        UIRectFill(rect)
        let image : UIImage = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext()
        return image
    }
}

NavigationBar代码

// Sets Bar's Background Image (Color) //
navigationController?.navigationBar.setBackgroundImage(UIImage.imageWithColor(color: .blue),for: .default)
// Sets Bar's Shadow Image (Color) //
navigationController?.navigationBar.shadowImage = UIImage.imageWithColor(color: .red)

编辑1:

更新了扩展代码,因此您可以调整rect大小而不更改UIImage颜色不透明度.

编辑2:

添加了Swift 3 Swift 4代码.

原文链接:https://www.f2er.com/iOS/332329.html

猜你在找的iOS相关文章