所以我在主视图中有一个视图和一个标签。该视图在水平和垂直方向上都居中。当前,标签设置为距离屏幕顶部60像素。但是,在iPhone 4S上,它看起来很糟糕。标签离视图太近了。

我试图将其设置为仅在iPhone 4S上距顶部30像素,但我想我正在调整大小级别,而不只是在调整一台设备。

所以我的问题是这个。首先,有什么办法可以针对特定设备调整我的布局?其次,有没有一种方法可以将标签居中放置在屏幕顶部和视图顶部之间的中间位置?

同样仅供参考,所有这些都是垂直方向。

最佳答案

您通常希望避免为特定设备添加布局约束。尺寸等级和方向更好,因为它们更灵活。但是,如果您确实需要这样做(并且在某些情况下,如果您有一个非常特定的布局,这是不可避免的),则可以使用UIDevice和其他一些机制来做到这一点(包括简单地获取屏幕尺寸)并将其与已知高度(在本例中为480点)进行比较。在设置约束并进行相应更改时,只需在if语句中使用此代码即可,您确实需要在代码中设置约束去工作。

至于第二个问题,有几种方法可以使视图居中,最常见的是使用UILayoutGuide(或者,如果支持

// Assuming you have a view called topView, a root view which are already configured and a myLabel view, this code only covers the vertical aspect of the layout

let guide1 = UILayoutGuide()
view.addLayoutGuide(guide1)
let guide2 = UILayoutGuide()
view.addLayoutGuide(guide2)

// space above the label
guide1.topAnchor.constraint(equalTo: topView.bottomAnchor).isActive = true
// space below the label
guide2.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
// make the spaces equal
guide1.heightAnchor.constraint(equalTo: guide2.heightAnchor).isActive = true

myLabel.topAnchor.constraint(equalTo: guide1.bottomAnchor).isActive = true
myLabel.bottomAnchor.constraint(equalTo: guide2.topAnchor).isActive = true

关于ios - iOS版式Xcode 8,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40032971/

10-10 20:50