如何以编程方式设置图像以在每个设备上具有相同的相对大小和位置?

时间:2016-11-15 08:45:11

标签: ios swift xcode ipad swift3

我有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)

1 个答案:

答案 0 :(得分:0)

要回答你的问题,

  

但必须有更好的方法,对吧?大多数应用程序如何调整大小和位置,以便应用程序在每台设备上看起来几乎相同?

是的,有更好的方法称为Auto Layout

如果您是iOS用户,我真的建议您在storyboard中进行操作。了解Auto Layout在iOS中的工作方式要容易得多。有非常好的教程可以帮助您理解Auto Layout。由Ray Wenderlich website查看一个。

如果您真的希望以编程方式执行此操作,即使您尝试在代码中定义相对大小,当您有更多视图时,也会变得非常混乱。 Auto LayoutConstraints仍然是可行的方法。然而,Apple Programmatically Creating Constraints的方式实际上太冗长了,在我看来,使用起来很麻烦。像Spring这样的外部框架对于以编程方式进行操作非常有帮助。

最终,无论您希望采用哪种方式,强烈了解Auto LayoutConstraints在iOS中都很重要。如果没有这个,那么为这么多不同的Apple设备创建合适的视图将会非常困难。