在没有安全区域的情况下无法查看maxX



我试图得到一个视图的最大计算,但虽然视图是在堆栈视图内(与其他视图)和约束是不在安全区域内(它似乎也是这样)当我做

self.frame.maxX

在我的视图中,它给了我视图maxX+安全区域x…(我检查过了)

有谁知道原因并有解决办法吗?

--------------

编辑:

感谢@Sweeper,我明白我的错误和我需要什么:

self.bounds.maxX

这个给出了正确的最大值。

---------------

谢谢,大卫。

假设视图实际显示在屏幕上,您可以将视图的safeAreaInsets应用于视图的边界,然后将结果矩形转换为父视图的坐标空间,即frame的坐标空间。

let safeBounds = someView.bounds.inset(by: someView.safeAreaInsets)
let safeFrame = someView.superview?.convert(safeBounds, from: someView)
let maxX = safeFrame?.maxX

From the docs:

视图的安全区域反映了没有被导航栏、选项卡栏、工具栏和其他模糊视图控制器视图的祖先覆盖的区域。通过将此属性中的insets应用于视图的边界矩形,可以获得视图的安全区域。

相关内容