swift - 是否可以使用 AutoLayout 在运行时使纵横比为 1 :1 based on the largest of either Screen Height or Screen width,?

标签 swift xcode autolayout constraints

我对特征和约束感到非常困惑。

我有一个 View 需要采用 1:1 的比例,并且它的大小需要在运行时以及所有设备方向上取决于屏幕宽度或屏幕高度中的较大者。

最重要的是,我需要将它从屏幕中心向下移动,移动量是在运行时根据方向和 iPhone 与 iPad 计算得出的。

在代码中完成所有这些并从此 View 中删除所有 AutoLayout 约束是否可能或更好?

我读过这个:Aspect ratio constraint relative to the screen width

还有这个:https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/AutolayoutPG/Size-ClassSpecificLayout.html

但我似乎仍然无法让它做我想做的事。

有人可以阐明我需要做什么吗?

谢谢

最佳答案

您至少需要将这 2 个约束添加到 Storyboard 中的 UIView。 第一个将用于纵横比,第二个将用于 UIView 的宽度,其值为常量。 您将把第二个约束的导出添加到名为 widthConstraint 的 UIViewController 类中 在委托(delegate)函数 ViewWillAppear() 上,您将添加计算最大边的代码,并将该值添加到约束常量。

UIView.animate(withDuration: 0.0) {
        let largestOfScreenSide = max(UIScreen.main.bounds.width, UIScreen.main.bounds.height)
        self.widthConstraint.constant = largestOfScreenSide
        self.view.layoutIfNeeded()
    }

关于swift - 是否可以使用 AutoLayout 在运行时使纵横比为 1 :1 based on the largest of either Screen Height or Screen width,?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57667848/

相关文章:

ios - 自动布局、尺寸类别和字体大小

ios - 自动布局 uilabel 在 tableView 单元格中自动调整大小

ios - 防止 sizeForItemAt 由于重用动态 collectionView 单元格而使用错误的单元格大小

ios - 一个简单的iOS应用,尝试学习Swift

ios - 使用 CABasicAnimation 为 UITextField 绘制描边动画

swift - 使用 Swift 3 从数组初始化字典

swift - 在 Swift 中使用 IOPSNotificationCreateRunLoopSource 创建一个 CFRunLoopSourceRef

ios - 如何解决 'duplicate symbols for architecture arm64' 错误?

ios - Swift 3 NSError 期待之后的调用类型?

xcode - 项目自己的头文件的Xcode设置在哪里?