【问题标题】:swift - frame issue in UINavigationController class when rotatingswift - 旋转时 UINavigationController 类中的框架问题
【发布时间】:2015-08-25 03:11:34
【问题描述】:

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

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

这里是相关代码sn-p,来自自定义navclass的override func viewDidLoad()。

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

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

【问题讨论】:

    标签: swift uinavigationcontroller screen-rotation


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多