-1

我正在尝试获取视图的 maxX 以进行计算,但是尽管视图位于堆栈视图内(与其他视图一起)并且约束不在安全区域内(而且看起来也是如此)当我在正在做

self.frame.maxX

在我看来,它让我查看 maxX + safe area x ..(我检查过)

有谁知道为什么并有任何解决方案?

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

编辑:

感谢@Sweeper,我了解我的错误以及我需要什么:

self.bounds.maxX

这个给出了正确的 maxX。

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

谢谢,大卫

4

1 回答 1

1

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

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

文档

视图的安全区域反映了导航栏、标签栏、工具栏和其他遮挡视图控制器视图的祖先未覆盖的区域。您可以通过将此属性中的插图应用于视图的边界矩形来获得视图的安全区域。

于 2021-07-28T13:23:51.433 回答