0

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

我已经在这里和谷歌搜索了关于这样做的快速介绍,但找不到任何适用的东西(我发现的一切都是基于使用 IB 或使用大小类而不是方向 - 我特别想要横向,而不是紧凑型与常规型)。

所以,我所有的自动布局约束现在都设置好了viewDidLoad。至少毫无疑问,那些依赖于方向的需要移动到 UIViewController 上的某种委托/回调方法,但我不知道那是什么......

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

谢谢你的帮助 :)

4

1 回答 1

0

我个人会使用这个功能:

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

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

于 2017-10-09T22:16:49.447 回答