【问题标题】:UINavigationbar setting shadow through appearance does not workUINavigationbar 通过外观设置阴影不起作用
【发布时间】:2017-03-25 16:04:12
【问题描述】:

我正在尝试向我的导航栏添加阴影。代码如下所示:

UINavigationBar.appearance().barStyle = .black
UINavigationBar.appearance().barTintColor = UIColor(white: 155/255,
                                                    alpha: 1.0)
UINavigationBar.appearance().isTranslucent = false
UINavigationBar.appearance().layer.shadowOffset = CGSize(width: 0, height: 4)
UINavigationBar.appearance().layer.shadowRadius = 4.0
UINavigationBar.appearance().layer.shadowColor = UIColor.black.cgColor
UINavigationBar.appearance().layer.shadowOpacity = 0.4
UINavigationBar.appearance().layer.masksToBounds = false
UINavigationBar.appearance().layer.shouldRasterize = true

但它不起作用。为什么它不起作用,我错过了什么?我不想扩展或继承 NavigationBar 来执行此操作。

编辑: 我发现

UINavigationBar.appearance().layer.bounds

返回错误的值,所以可能就是这样,但有人知道为什么吗?

【问题讨论】:

  • 感谢@Anbu.Karthik,但我想使用外观来做到这一点,所以上面的链接对我没有多大帮助
  • @L3M0L 你能用外观方法做到吗?
  • 听起来外观协议将仅使用 shadowImage 方法应用阴影

标签: ios swift swift3 uinavigationbar


【解决方案1】:

在您的viewDidLoad 中尝试以下代码。

    navigationController?.navigationBar.layer.shadowColor = UIColor.black.cgColor
    navigationController?.navigationBar.layer.shadowOpacity = 1
    navigationController?.navigationBar.layer.shadowOffset = CGSize.zero
    navigationController?.navigationBar.layer.shadowRadius = 10
    navigationController?.navigationBar.layer.masksToBounds = false

输出:

【讨论】:

  • 谢谢!然而,这不是我正在寻找的解决方案:(我想通过 UIAppearance 来做,所以阴影到处都是一样的。
【解决方案2】:

斯威夫特 3

扩展UINavigationBar 并定义所需的阴影属性

extension UINavigationBar {

    var shadow: Bool {
        get {
            return false
        }
        set {
            if newValue {
                self.layer.shadowOffset = CGSize(width: 0, height: 2)
                self.layer.shadowColor = UIColor.lightGray.cgColor
                self.layer.shadowRadius = 3
                self.layer.shadowOpacity = 0.5;
            }
        }
    }
}

AppDelegate全局添加阴影

UINavigationBar.appearance().shadow = true

学分Amer Harb

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    相关资源
    最近更新 更多