自动布局[Snapkit]更改旋转时的约束

时间:2017-09-21 14:36:01

标签: swift autolayout orientation snapkit

我构建了一个不使用Snapkit创建自动布局约束的界面构建器的应用程序。肖像中的一切看起来都很好,但是有些屏幕需要一些特定于景观的限制。

我已经在这里和谷歌进行了一般性的搜索,以便快速介绍这一点,但无法找到适用的任何内容(我发现的所有内容都是基于使用IB或使用的大小类而不是方向 - 我特别想要风景,而不是紧凑与常规)。

因此,我的所有自动布局约束目前都在viewDidLoad中设置。毫无疑问,那些将取决于方向的人需要转向UIViewController上的某种委托/回调方法,但我不知道知道那是什么......

  1. 如何检测方向更改以更改约束?
  2. 如何获取当前方向(所以当我第一次加载视图控制器时,我可以设置正确的约束...或者上面的问题中的函数是否总是至少为每个加载的VC调用一次?)
  3. 在ViewController之外,例如自定义UIView,如何检测方向变化?我应该发出自定义通知事件吗?我宁愿不让我的UIViewController告诉每个子视图它的方向已经改变了。
  4. 感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

我个人会使用这个功能:

    override func viewWillTransitionToSize(size: CGSize, 
    withTransitionCoordinator coordinator: 
    UIViewControllerTransitionCoordinator) {}

然后,当检测到这些更改时,请调用setNeedsLayoutlayoutIfNeeded,这会触发所有子视图的重绘,然后可以处理特定方向的设置约束