我使用了一个自定义的UINavigationController类来在导航栏上放置一个颜色渐变。自定义导航类确定导航栏的帧大小,然后将渐变放入其中。问题是,当我从纵向旋转到横向时,渐变仅填充横向条的纵向部分。我仅将自定义UINavigationController类分配给情节提要中的导航视图。
所以我猜想我需要以某种方式在完成旋转后调用自定义navclass中的帧大小刷新,但是我不确定如何或在哪里进行?
这是相关的代码段,来自自定义navclass的重写func viewDidLoad()。
let gradientlayer = CAGradientLayer()
gradientLayer.frame = self.navigationBar.bounds
self.navigationBar.layer.inserSublayer(gradientLayer, atIndex: 1)
我尝试将其放入viewWillAppear()中,但这没有用。有什么帮助吗?
viewDidLoad()
并且viewWillAppear()
不会在旋转时被调用,因此您的代码不会在那里更新框架。
您应该添加gradientLayer.frame = self.navigationBar.bounds
,viewWillLayoutSubviews()
但保留其他代码,viewDidLoad()
以免出现多个渐变图层。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句