自动布局 [Snapkit] 更改旋转约束
Auto-Layout [Snapkit] change constraints on rotate
我构建了一个不使用界面构建器的应用程序,它使用 Snapkit 创建我的自动布局约束。纵向显示一切都很好,但是一些屏幕需要一些特定于横向的限制。
我在这里和 Google 大体上搜索了有关执行此操作的快速介绍,但找不到任何适用的内容(我找到的所有内容都是基于使用 IB 或使用大小 类 而不是方向 - 我特别想要风景,而不是紧凑型与常规型)。
所以,目前我所有的自动布局约束都在 viewDidLoad
中设置。至少毫无疑问,那些依赖于方向的方法需要在 UIViewController 上移动到某种 delegate/callback 方法,但我不知道那是什么...
- 如何检测方向变化以更改我的约束?
- 我如何获得当前方向(所以当我第一次加载视图控制器时,我可以设置正确的约束......或者我上面问题中的函数总是至少调用一次 VC正在加载?)
- 在 ViewController 之外,例如自定义 UIView,如何检测方向变化?我应该发送自定义通知事件吗?我不想让我的 UIViewController 告诉每个子视图它的方向已经改变。
感谢您的帮助:)
我个人会使用这个功能:
override func viewWillTransitionToSize(size: CGSize,
withTransitionCoordinator coordinator:
UIViewControllerTransitionCoordinator) {}
然后当检测到这些变化时,调用 setNeedsLayout
和 layoutIfNeeded
这应该会触发所有子视图的重绘,然后可以处理特定方向的设置约束
我构建了一个不使用界面构建器的应用程序,它使用 Snapkit 创建我的自动布局约束。纵向显示一切都很好,但是一些屏幕需要一些特定于横向的限制。
我在这里和 Google 大体上搜索了有关执行此操作的快速介绍,但找不到任何适用的内容(我找到的所有内容都是基于使用 IB 或使用大小 类 而不是方向 - 我特别想要风景,而不是紧凑型与常规型)。
所以,目前我所有的自动布局约束都在 viewDidLoad
中设置。至少毫无疑问,那些依赖于方向的方法需要在 UIViewController 上移动到某种 delegate/callback 方法,但我不知道那是什么...
- 如何检测方向变化以更改我的约束?
- 我如何获得当前方向(所以当我第一次加载视图控制器时,我可以设置正确的约束......或者我上面问题中的函数总是至少调用一次 VC正在加载?)
- 在 ViewController 之外,例如自定义 UIView,如何检测方向变化?我应该发送自定义通知事件吗?我不想让我的 UIViewController 告诉每个子视图它的方向已经改变。
感谢您的帮助:)
我个人会使用这个功能:
override func viewWillTransitionToSize(size: CGSize,
withTransitionCoordinator coordinator:
UIViewControllerTransitionCoordinator) {}
然后当检测到这些变化时,调用 setNeedsLayout
和 layoutIfNeeded
这应该会触发所有子视图的重绘,然后可以处理特定方向的设置约束