我构建了一个应用程序,它不使用任何界面生成器,而是使用 Snapkit 创建自动布局约束。纵向时一切看起来都很好,但是一些屏幕需要一些特定于横向的限制。
我在这里和谷歌上搜索了关于执行此操作的快速介绍,但找不到任何适用的内容(我发现的所有内容都是基于使用 IB 或使用尺寸类别而不是方向 - 我特别想要景观,而不是紧凑与常规)。
所以,目前我所有的自动布局约束都是在 viewDidLoad 中设置的。毫无疑问,至少,那些依赖于方向的需要转移到 UIViewController 上的某种委托(delegate)/回调方法,但我不知道那是什么......
- 如何检测方向变化以更改约束?
- 如何获取当前方向(因此,当我第一次加载 View Controller 时,我可以设置正确的约束...或者我上面问题中的函数是否总是为每个加载的 VC 至少调用一次?)<
- 在 ViewController 之外,例如自定义 UIView,如何检测方向变化?我应该发送自定义通知事件吗?我不想让我的 UIViewController 告诉每个 subview 它的方向已经改变。
感谢您的帮助:)
最佳答案
我个人会使用这个功能:
override func viewWillTransitionToSize(size: CGSize,
withTransitionCoordinator coordinator:
UIViewControllerTransitionCoordinator) {}
然后,当检测到这些更改时,调用 setNeedsLayout
和 layoutIfNeeded
,这应该会触发所有 subview 的重绘,然后可以处理特定方向的设置约束
关于swift - 自动布局 [Snapkit] 更改旋转约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46346784/