如何为iPhone 6 +,6和5指定不同的尺寸?

Dre*_*ren 0 ios

我希望iPhone 6 +,6和5的每个视图看起来几乎相同.在附图中,我的意思是,例如,"取消"按钮应该是iPhone 5中屏幕左边缘30像素, 6 x为35 px,6 +为45 px,其他元素为+ px.

如何为每种类型的特定约束大小放置?如果我在约束中使用比例,那么按钮会增长,但是它们的大小不受控制,元素之间的空间也不能改变.具有特定约束大小的大小类我也不能使用,因为cW aH对于5和6个iphone是相同的.(据我所知).

我无法弄明白该怎么做.6和6+的不同设计通常如何管理?

在此输入图像描述

Ces*_*are 6

您无法使用自动布局定位iPhone的特定型号.它并不意味着这一点.构建自动布局是为了避免这种情况.但是,这里有两个解决方法:

针对iOS 9及更高版本进行了更新

使用堆栈视图.他们非常适合这种布局.

第一种选择

放置一个不可见的,UIView并创建附加到的顶部,底部,前导和尾随约束Superview.之后,将您刚刚放置的对象(它们可以UIImageViews,UILabels并且列表继续)放置在UIView您的内部.现在创建将对象连接到的顶部和底部约束UIView.

我创建了一个演示程序,向您展示它是如何完成的.正如您将看到的,按钮具有不同的大小,具体取决于屏幕的大小.请从演示这个链接.

第二种选择

您可以通过编程方式创建和修改约束.根据用户的设备创建NSLayoutConstraint并调整constant它:

var myConstraint = NSLayoutConstraint (item: myButton,
        attribute: NSLayoutAttribute.Top,
        relatedBy: NSLayoutRelation.Equal,
        toItem: self.view,
        attribute: NSLayoutAttribute.Top,
        multiplier: 1,
        constant: 0)
    self.view.addConstraint(myConstraint)

if UIScreen.mainScreen().bounds.size.width == 375 {
    // iPhone 6
    myConstraint.constant = 10
} else if UIScreen.mainScreen().bounds.size.width == 414 {
    // iPhone 6+
    myConstraint.constant = 15
}
Run Code Online (Sandbox Code Playgroud)

  • *咳嗽*作为一般规则,永远不要根据编辑对浮子进行直接比较.在这种情况下,可能选择介于6和6+以及> 395或类似的中介 - 除了浮点问题之外,如果出现新的大小,它将使您的代码最有可能做一些合理的事情.但是,你知道,迂腐攻击.我仍然会为这个答案积极投票. (2认同)