Xcode界面生成器:制作一个视图的中心X等于它的超级视图的三分之一
我有两个视图,我想以一种方式将它们水平放置。Xcode界面生成器:制作一个视图的中心X等于它的超级视图的三分之一
我想定义thier Center X
,使他们的第三和上海华宽度的三分之二,但我没有发现任何的限制设置,允许你这样做。
你能告诉我这是怎么实现的吗?
你说:
我有一个两个视图我想以一种方式放置它们的方式是水平等分。
我想定义他们的中心X,以便它们是超视图宽度的三分之二和三分之二,但是我没有发现允许你这样做的约束设置。
值得注意的是,“等间隔”和“中心x是超视图的⅓和are”实际上并不是同一个东西。考虑“⅓和⅔”情景:假设一个300像素宽的超视图,它将分别将⅓和⅔点分别设置为100和200。如果您添加两个宽度为50像素的子视图,则左右边距均为75像素,但中间边距为50像素。如果子视图更宽,则情况会变得更糟(例如,如果子视图宽度为100像素,则左右边距将为50像素,但两者之间绝对没有空间)。
如果您确实希望它们均匀分布(子视图之间的水平空间与子视图和其超级视图边缘之间的空间相同),则可以使用布局指南(如果以编程方式执行)。
因此,假设你已经创建了两个子视图,并已采取了规模和垂直约束的照顾,你可以再做:
// create three layout guides
let layoutGuides = (0 ..< 3).map { _ in UILayoutGuide() }
// add them to your view
layoutGuides.forEach { view.addLayoutGuide($0) }
// create dictionary for VFL
let views = ["layoutGuide0": layoutGuides[0], "layoutGuide1": layoutGuides[1], "layoutGuide2": layoutGuides[2], "subview0": subviews[0], "subview1": subviews[1]]
// define horizontal constraints where three layout guides are the same width
let vfl = "H:|[layoutGuide0][subview0][layoutGuide1(==layoutGuide0)][subview1][layoutGuide2(==layoutGuide0)]|"
let constraints = NSLayoutConstraint.constraints(withVisualFormat: vfl, metrics: nil, views: views)
NSLayoutConstraint.activate(constraints)
如果你想做到这一点在IB,你不能创建这些类型的布局指南,但是可以添加三个不可见的“间隔”视图(即简单的UIView
alpha为0的对象),并使约束条件保持各自的宽度彼此相等。然后在堆栈视图中粘贴这五个视图(两个子视图加上三个间隔视图)(或者,如果你是一个受虐狂,绕过堆栈视图并自己在这五个子视图之间添加六个前导/尾随约束),并且达到所需两个均匀间隔的子视图的效果(在这三个不可见的“间隔”视图之间)。
所以,这是什么样子(做了三个“隔离”视图中显示,所以你可以看到这是怎么回事):
净效应,当你给这三个间隔意见的0(以使它们不可见)的alpha
如下:
总得爱草图:d – LinusGeffarth