自动布局 [Snapkit] 更改旋转约束
Posted
技术标签:
【中文标题】自动布局 [Snapkit] 更改旋转约束【英文标题】:Auto-Layout [Snapkit] change constraints on rotate 【发布时间】:2017-09-21 14:36:00 【问题描述】:我使用 Snapkit 构建了一个不使用界面构建器的应用程序来创建我的自动布局约束。纵向看起来一切都很好,但是一些屏幕需要一些特定于横向的限制。
我在这里和谷歌上搜索过关于这样做的快速介绍,但实际上找不到任何适用的东西(我发现的一切都是基于使用 IB 或使用大小类而不是方向 - 我特别想要横向,而不是紧凑与常规)。
所以,目前我所有的自动布局约束都设置在viewDidLoad
中。至少毫无疑问,那些依赖于方向的需要移动到 UIViewController 上的某种委托/回调方法,但我不知道那是什么......
-
如何检测方向变化以更改约束?
如何获得当前方向(所以当我第一次加载视图控制器时,我可以设置正确的约束......或者我上面的问题中的函数是否总是为每个加载的 VC 调用至少一次?)李>
在 ViewController 之外,例如自定义 UIView,如何检测方向变化?我应该发送自定义通知事件吗?我宁愿不让我的 UIViewController 告诉每个子视图它的方向已经改变。
感谢您的帮助:)
【问题讨论】:
【参考方案1】:我会亲自使用这个功能:
override func viewWillTransitionToSize(size: CGSize,
withTransitionCoordinator coordinator:
UIViewControllerTransitionCoordinator)
然后当检测到这些更改时,调用 setNeedsLayout
和 layoutIfNeeded
这应该会触发所有子视图的重绘,然后可以处理特定方向的设置约束
【讨论】:
以上是关于自动布局 [Snapkit] 更改旋转约束的主要内容,如果未能解决你的问题,请参考以下文章
Swift - 自动布局库SnapKit的使用详解1(配置使用方法样例)