我一直在以编程方式设计我的UI,利用名为iOSHat的工具将PSD图层转换为Swift Code,您可以(几乎完美地)将其复制并粘贴到XCode中。 PSD设计全部用于iPhone 6规格,但我希望能够将这些设计应用于iPhone 5或iPhone 4。虽然我一直在使用该工具,但它并没有真正影响这个问题背后的关键概念。下面是我在Splash Screen上设计的Button的代码......
let loginButton = UIButton()
loginButton.setTranslatesAutoresizingMaskIntoConstraints(false)
loginButton.setBackgroundImage(UIImage(named: "loginButton"), forState: .Normal)
loginButton.setTitleColor(UIColor(red: 1, green: 1, blue: 1, alpha: 1), forState: .Normal)
loginButton.setTitle("LOGIN", forState: .Normal)
loginButton.titleLabel!.font = UIFont(name: "Lato-Bold", size: 13.000)
self.view.addSubview(loginButton)
// align loginButton from the top and bottom
self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-464.5-[loginButton]-142.5-|", options: .DirectionLeadingToTrailing, metrics: nil, views: ["loginButton": loginButton]))
// align loginButton from the left and right
self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-30-[loginButton]-196-|", options: .DirectionLeadingToTrailing, metrics: nil, views: ["loginButton": loginButton]))
// width constraint
self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:[loginButton(==149)]", options: .DirectionLeadingToTrailing, metrics: nil, views: ["loginButton": loginButton]))
// height constraint
self.view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:[loginButton(==60)]", options: .DirectionLeadingToTrailing, metrics: nil, views: ["loginButton": loginButton]))
当我在模拟器和测试设备上运行时,所有这些代码都能在我的iPhone 6上完美运行。但是当我在我的iPhone 5模拟器上运行它时,它显然似乎崩溃了。任何人都对我能做什么有任何想法,优化我的视觉约束,使这个按钮可以扩展到不同的设备。