swift - 翻屏时Auto-Rayout位置问题

标签 swift rotation ios-autolayout snapkit

当我使用 SnapKit 配置自动布局时,我实现了如下所示的按钮。

即使屏幕发生水平变化,frame.width 的值仍然计算为垂直时的值。

如果启动第一个应用时屏幕是水平的,frame.width 将继续计算为水平模式值。

我是否需要更新约束以反射(reflect)宽度方向的变化?

nextButton.snp.updateConstraints { (make) in
    make.left.equalTo(buttonView.snp.left).offset(self.view.frame.width / 2) // <- here
}

最佳答案

看起来您需要在转换期间更新宽度约束。下面是将在布局转换(方向更改)期间调用的方法。

func viewWillTransition(to size: CGSize, 
                   with coordinator: UIViewControllerTransitionCoordinator)

您可以覆盖此方法并使用 来更新约束。

关于swift - 翻屏时Auto-Rayout位置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57814503/

相关文章:

ios - 我希望两个按钮具有相同的宽度并使用自动布局从屏幕顶部按比例在所有屏幕尺寸中定位自己?

swift - 构建失败并显示 "Command CompileStoryboard failed with a nonzero exit code"

jquery - 单击导航时旋转图像或 div

ios - 带有 UIStackViews 的动态 UITableView 单元格高度

javascript - 如何在 html 5 Canvas 上的圆圈内旋转图片?

swing - Swing 旋转边框

uiview - 如何以编程方式使用 AutoLayout 将 UIView 设置为其 SuperView 的宽度?

ios - 无法从像 XMLParser 这样的异步函数调用 Segue

swift - 无法将类型 'Promise<Void>' 的返回表达式转换为返回类型 'Promise<JSON>' Swift

swift - 如何在没有 @IBOutlets 的情况下访问 Storyboard项目?