如何为iPhone 6 +,6和5指定不同的尺寸?
我希望iPhone 6 +,6和5的每个视图看起来几乎相同。在附图中,我的意思是,例如,“取消”按钮应该是iPhone 5中屏幕左边缘30像素, 6 p中35 px,6+中45 px,其他元素相似。
如何为每种类型的特定约束大小放置? 如果我在约束中使用比例,那么按钮会增长,但它们的大小不受控制,元素之间的空间也不能改变。 具有特定约束大小的大小类我也不能使用,因为cW aH对于5和6个iphone是相同的。 (据我所知)。
我无法弄明白该怎么做。 6和6+的不同设计通常如何管理?
为什么你需要选择30,35和45px? 是否有理由进行像素化放置?
您可以使用它们的乘法值而不是常量来使用更灵活的约束。
约束根据超视图尺寸自行调整。
iPhone5 – iPhone 6 – iPhone 6+ – iPad – iPhone4横向
请注意我的中心X对齐约束是如何配置的:
您可以看到值的行为有点奇怪,有时乘数> 1,有时它在1和2之间,或者<1取决于First Item
和Second Item
的顺序。 您仍然可以通过单击它们并选择Reverse First And Second Item
来交换它们的订单。
您无法使用自动布局定位iPhone的特定型号。 这不是为了那个。 构建自动布局是为了避免这种情况。 但是,这里有两个解决方法:
适用于iOS 9及更高版本
使用堆栈视图。 他们非常适合这种布局。
第一种选择
放置一个不可见的UIView
并创建附加到Superview
顶部,底部,前导和尾随约束。 之后,将您刚刚放置的UIView
内的对象(它们可以是UIImageViews
, UILabels
和列表继续)放置。 现在创建将对象连接到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 }