我使用自定义UINavigationController类在导航栏上放置颜色渐变。自定义navclass确定导航栏的帧大小,然后将渐变放入其中。问题是,当我从纵向旋转到横向时,渐变仅填充横向条的纵向部分。我只将自定义UINavigationController类分配给故事板中的导航视图。
所以我猜测我在旋转完成时需要为自定义navclass中的帧大小调用刷新,但我不确定如何或在哪里?
这是相关的代码段,来自自定义navclass的override func viewDidLoad()。
let gradientlayer = CAGradientLayer()
gradientLayer.frame = self.navigationBar.bounds
self.navigationBar.layer.inserSublayer(gradientLayer, atIndex: 1)
我尝试将它放在viewWillAppear()中,但这没有用。有什么帮助吗?
答案 0 :(得分:0)
viewDidLoad()
和viewWillAppear()
不会在轮换时被调用,因此您的代码不会在那里更新框架。
您应该将gradientLayer.frame = self.navigationBar.bounds
添加到viewWillLayoutSubviews()
,但将其他代码保留在viewDidLoad()
中,这样您就不会使用多个渐变图层。