我有一个没有使用自动布局的UIView,一些组件是根据它们在主视图中X和Y坐标的百分比显示的.

以前我会运行一个函数来更新他们在DidRotateFromInterface中的位置,但是我发现这在iOS8中已经被弃用了.

我看过ViewWillTransitionOnToSize,但它给出了奇怪的结果,而且似乎没有ViewDidTransitionOnSize函数.

有没有一种简单的方法(在Swift中)在设备旋转后运行功能?

推荐答案

使用符合UIViewControllerTransitionCoordinator的对象调用viewWillTransitionToSize委托方法.协议声明的一个方法是animateAlongsideTransition(_:animation, completion:).您可以使用它在转换完成后执行代码.

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransition(to: size, with: coordinator)
    coordinator.animate(alongsideTransition: nil) { _ in
        // Your code here
    }
}

Ios相关问答推荐

自定义alert 未执行任何操作

我如何确保用户继续他们在应用程序中停止的地方?

SWIFT设备方向更新不正确

通过在SWIFT中不起作用的泛型传递协议一致性类型

SWIFT根据地球坐标修改 node 旋转

视图未更新以在按下按钮时显示另一个视图

如何在 Swift 中存储具有关联值的协议?

比较 `某个协议` 实例时出现编译错误

NumberFormatter 无法使用 Xcode 15.0 beta 正确识别 iOS 17 beta 中的 Locale 货币设置

卡在 Apple 的 SwiftUI 教程第 5 章(更新应用数据)

辅助功能判断器无法在 macOS Monterey 版本 12.3 上的 Xcode 版本 13.3 上运行

在iOS7半透明导航栏中获取正确的 colored颜色

有什么方法可以预填充核心数据?

无法同时满足约束 - 没有适当的约束

iOS 中是否有用于自定义振动的 API?

如何更新推送通知服务证书

如何从一个特定的视图控制器中隐藏导航栏

在滚动视图中使用动态大小的控制器调整容器视图的大小

呈现和关闭模态视图控制器

使用 swift 3 在 UIView 上添加阴影