如何为不同设备自动布局应用程序。
为了这个问题的基本性质,提前道歉。我很高兴被重定向到此问题的以前回答的版本,但还没有找到它。如何为不同设备自动布局应用程序。
我刚刚完成了我的第一个应用程序的大部分,并担心我可能会以错误的方式设置它。
我的应用程序在iphone7上看起来“很好”,但是当我将设备更改为7+时,视图控制器的底部和右侧边缘上有空白空间,当我在iphone 5上运行它时,视图不适合。
有没有办法让我的应用程序的视图自动伸展/凝结到任何设备?或者,我预计这种方式更复杂吗?我想相信有一个简单的解决方案,但我还没有找到它。
谢谢!
如果只支持肖像模式然后。
首先选择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的(命名为:常数) } }
应用逻辑在该功能支持所有设备:)
谢谢。此视频有助于向我提供我需要的信息:youtube.com/watch?v=RH_Ye-8ii8E&t – tfcamp
您的标题说明了一切,您想使用自动布局!有很多这方面的教程:) –