Ios NavigationController在按下和弹出后剪切阴影?

Ios NavigationController在按下和弹出后剪切阴影?,ios,swift,uinavigationcontroller,uinavigationbar,Ios,Swift,Uinavigationcontroller,Uinavigationbar,当我向navigationBar添加自定义视图时,NavigationController出现问题,并且此视图有阴影,再次按下并弹出时阴影会被剪切 1:-推前查看控制器A 2:-推送后的视图控制器B 3:-弹出后的视图控制器A 它是一个非常简单的类,只包含以下代码 override func viewDidLoad() { super.viewDidLoad() let view : UIView = UIView(frame: CGRect(x: 0, y: 0, wi

当我向navigationBar添加自定义视图时,NavigationController出现问题,并且此视图有阴影,再次按下并弹出时阴影会被剪切

1:-推前查看控制器A

2:-推送后的视图控制器B

3:-弹出后的视图控制器A

它是一个非常简单的类,只包含以下代码

override func viewDidLoad() {
    super.viewDidLoad()

    let view : UIView = UIView(frame: CGRect(x: 0, y: 0, width: 300, height: 40))

    view.layer.shadowOpacity = 1
    view.layer.shadowOffset = CGSize(width: 1.0, height: 1.0)
    view.layer.shadowRadius = 20.0
    view.layer.shadowColor = UIColor.green.cgColor
    view.clipsToBounds = false
    view.layer.masksToBounds = false
    view.backgroundColor = UIColor.red

    self.navigationController?.navigationBar.topItem?.titleView = view
}

根据一些快速检查

.navigationBar
有一个“contentView”

初次出现时,该contentView将
.clipsToBounds
设置为
false

将VC推送到堆栈上后,contentView的
.clipsToBounds
属性将变为
true

这就是为什么一开始你们可以看到阴影

我想你需要找到另一种方法来让自己看起来。。。您可以尝试子类化,但苹果的文档明确指出:

允许使用UINavigationBar类的方法和属性自定义导航栏的外观,但决不能更改其框架、边界或alpha值或直接修改其视图层次


根据一些快速检查

.navigationBar
有一个“contentView”

初次出现时,该contentView将
.clipsToBounds
设置为
false

将VC推送到堆栈上后,contentView的
.clipsToBounds
属性将变为
true

这就是为什么一开始你们可以看到阴影

我想你需要找到另一种方法来让自己看起来。。。您可以尝试子类化,但苹果的文档明确指出:

允许使用UINavigationBar类的方法和属性自定义导航栏的外观,但决不能更改其框架、边界或alpha值或直接修改其视图层次