swift - 自动布局 [Snapkit] 更改旋转约束

标签 swift autolayout orientation snapkit

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

我在这里和谷歌上搜索了关于执行此操作的快速介绍,但找不到任何适用的内容(我发现的所有内容都是基于使用 IB 或使用尺寸类别而不是方向 - 我特别想要景观,而不是紧凑与常规)。

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

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

感谢您的帮助:)

最佳答案

我个人会使用这个功能:

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

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

关于swift - 自动布局 [Snapkit] 更改旋转约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46346784/

相关文章:

ios - AutoLayout 将 UILabel 高度设置为零

ios - 如何使一组标签相对于图像垂直居中?

ios - 自动布局 UITableViewCell

iphone - 如何使用 AVFoundation 为逐帧生成的视频设置方向?

android - 如何在android中的方向变化中加载不同的xml文件

ios - NSURLSessionUploadTask 后台 session - 带一些参数的文件上传

swift - 无法关闭嵌入在导航 Controller 中的 View Controller

swift - UIRefreshControl 在下拉时崩溃 - Uncaught Exception Swift

ios - OAuth2 : Returning to App After Logging in

ios - iPhone 12 和 iPhone 13 上的颠倒方向