swift - 旋转

时间:2015-08-25 03:11:35

标签: swift uinavigationcontroller screen-rotation

我使用自定义UINavigationController类在导航栏上放置颜色渐变。自定义navclass确定导航栏的帧大小,然后将渐变放入其中。问题是,当我从纵向旋转到横向时,渐变仅填充横向条的纵向部分。我只将自定义UINavigationController类分配给故事板中的导航视图。

所以我猜测我在旋转完成时需要为自定义navclass中的帧大小调用刷新,但我不确定如何或在哪里?

这是相关的代码段,来自自定义navclass的override func viewDidLoad()。

let gradientlayer = CAGradientLayer()
gradientLayer.frame = self.navigationBar.bounds
self.navigationBar.layer.inserSublayer(gradientLayer, atIndex: 1)

我尝试将它放在viewWillAppear()中,但这没有用。有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

viewDidLoad()viewWillAppear()不会在轮换时被调用,因此您的代码不会在那里更新框架。

您应该将gradientLayer.frame = self.navigationBar.bounds添加到viewWillLayoutSubviews(),但将其他代码保留在viewDidLoad()中,这样您就不会使用多个渐变图层。