我有3个矩形,它们的大小和位置非常完美...在iPhone 6和7 plus上。当我在较小的iPhone或iPad上运行时,它看起来都错了。
我可以在我的应用程序开头做一个巨大的if语句来检查设备,然后相应地为变量赋值,但是必须有更好的方法,对吧?大多数应用程序如何调整大小和位置,以便应用程序在每台设备上看起来几乎相同?
let blueRect = UIView(frame:CGRect(x: self.view.frame.size.width / 2 - 100, y: 100, width: 200, height: 100))
blueRect.backgroundColor = UIColor.blue
self.view.addSubview(blueRect)
let greenRect = UIView(frame:CGRect(x: self.view.frame.size.width / 2 - 100, y: 300, width: 200, height: 100))
greenRect.backgroundColor = UIColor.green
self.view.addSubview(greenRect)
let redRect = UIView(frame:CGRect(x: self.view.frame.size.width / 2 - 100, y: 500, width: 200, height: 100))
redRect.backgroundColor = UIColor.red
self.view.addSubview(redRect)
答案 0 :(得分:0)
要回答你的问题,
但必须有更好的方法,对吧?大多数应用程序如何调整大小和位置,以便应用程序在每台设备上看起来几乎相同?
是的,有更好的方法称为Auto Layout
。
如果您是iOS用户,我真的建议您在storyboard
中进行操作。了解Auto Layout
在iOS中的工作方式要容易得多。有非常好的教程可以帮助您理解Auto Layout
。由Ray Wenderlich website查看一个。
如果您真的希望以编程方式执行此操作,即使您尝试在代码中定义相对大小,当您有更多视图时,也会变得非常混乱。 Auto Layout
和Constraints
仍然是可行的方法。然而,Apple Programmatically Creating Constraints的方式实际上太冗长了,在我看来,使用起来很麻烦。像Spring这样的外部框架对于以编程方式进行操作非常有帮助。
最终,无论您希望采用哪种方式,强烈了解Auto Layout
和Constraints
在iOS中都很重要。如果没有这个,那么为这么多不同的Apple设备创建合适的视图将会非常困难。