2015-08-25 27 views
0

我使用自定义的UINavigationController类在导航栏中放置颜色渐变。自定义navclass确定导航栏的框架大小,然后将渐变放入。问题是,当我从肖像旋转到风景时,渐变只填充风景条的肖像部分。我只将自定义的UINavigationController类分配给故事板中的导航视图。Swift - 在UINavigationController类中旋转时发生的帧问题

所以我猜我需要调用一个刷新的自定义navclass框架大小,当一个旋转完成,但我不知道如何或在哪里?

以下是自定义navclass的override func viewDidLoad()中的相关代码片段。

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

我试着把它放在viewWillAppear()里面,但那不起作用。任何帮助?

回答

0

viewDidLoad()viewWillAppear()不会在循环中调用,所以您的代码将不会更新那里的框架。

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

+0

@Aaron_Brager - 非常好。谢谢你的帮助。 – Shane

相关问题