如何设置约束以入侵另一个视图

问题描述

我总是听到要设置约束来使视图之间保持一定距离,但是我想知道是否可以将视图设置为入侵另一个视图。

我的问题是,如果您在图像上看,会看到2个视图,一个足球和一个大的白色正方形。

最终结果将是这样:

Final result would be like this

我想设置一个像图像一样的约束,球总是在白色正方形视图内留出一定的空间,可以做类似的事情,或者我只需要在油漆,photoshop或其他物体上像我一样假装拥有图像的软件,不再担心约束(例如变通方法)。

解决方法

这可以通过基本的自动布局完成-约束视图绝对没有错,因此它们可以重叠。

这是一个简单的例子:

enter image description here

请注意左侧轮廓中的最后一个约束:

BoxView.top = ball.bottom - 24

这会使图像视图的底部比“框”视图的顶部低24点...换句话说,它具有24点的“重叠”。


修改

通过交换约束顺序,可能会更加清楚:

enter image description here

现在,最后一个约束显示:

ball.bottom = BoxView.top + 24

可能更直观。


编辑2

关于您的评论-球形图像视图被灰色框视图覆盖...

我无法复制它,但是我以前在图像视图中已经看到过这种情况。即使使用Debug View Hierarchy也会将图像视图显示在另一个视图的前面,但是它就像在它后面一样呈现。在我看到的情况下,在Storyboard中重新制作控制器可以解决此问题。

但是,可能不会,所以...

假设您已将图像视图连接到插座,则可以尝试以下操作:

@IBOutlet var ball: UIImageView!

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    view.bringSubviewToFront(ball)
}