如果只支持肖像模式然后。
首先选择design.As您选择iphone 7. 我选择iphone 7加一个基地布局。
创建一些常量。
为什么?
要创建一个宽高比乘以你的每个约束的常量值,你画在iphone 7 layout.so,它会根据设备正确计算。
像这样。
var SCREEN_WIDTH = UIScreen.main.bounds.size.width
var SCREEN_HEIGHT = UIScreen.main.bounds.size.height
var BASE_SCREEN_HEIGHT:CGFloat = 736.0
var SCREEN_MAX_LENGTH = max(SCREEN_WIDTH, SCREEN_HEIGHT)
var ASPECT_RATIO_RESPECT_OF_7P = SCREEN_MAX_LENGTH/BASE_SCREEN_HEIGHT
您也可以使用我的。如果您的基本布局是iPhone 7Plus。
如何使用?
假设您在iphone 7 plus中为标签绘制了一个约束为10的顶部约束。 然后创建一个函数,并在viewDidLoad中调用它来支持纵向模式下的所有设备。
func updateConstraint() {
topConstantOfYourLabel.constant = 10*ASPECT_RATIO_RESPECT_OF_7P
}
如果你支持景观模式
- ,如果你想改变景观布局,那么你需要设计landscape.As大部分的网点只要将这里和那里你只需要改变顶部左下限的约束。因此,在这种情况下,请卸载先前的约束并安装另一个约束,并使其仅适用于大小类别。
有很多在线教程的约自适应布局like this.
如果你不希望根据纵横比改变的布局,但正确地计算,则有是在定向过程中触发的功能。
倍率FUNC viewWillTransitionToSize(尺寸:CGSize, withTransitionCoordinator协调器: UIViewControllerTransitionCoordinator){ 如果UIDevice.currentDevice(){orientation.isLandscape.boolValue打印 ( “横向”) imageView.image = UIImage的(命名为: CONST2) }否则{ 打印( “纵向”) imageView.image = UIImage的(命名为:常数) } }
应用逻辑在该功能支持所有设备:)
您的标题说明了一切,您想使用自动布局!有很多这方面的教程:) –