自动布局 [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) 

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

【讨论】:

以上是关于自动布局 [Snapkit] 更改旋转约束的主要内容,如果未能解决你的问题,请参考以下文章

更改方向的自动布局约束

Swift - 自动布局库SnapKit的使用详解1(配置使用方法样例)

带有自动布局(snapkit)的圆形视图?

读 SnapKit 和 Masonry 自动布局框架源码(轉)

iOS - 使用自动布局在旋转时更改背景图像

[iOS]:删除和添加约束时自动布局动画更改框架位置