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

问题描述

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

我的问题是,如果您在图像上看,会看到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)
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...