没有安全区域无法查看 maxX

Can't get view maxX without safe area

我正在尝试获取用于计算的视图的 maxX,但尽管该视图位于堆栈视图内(与其他视图一起)并且约束不在安全区域内(而且它看起来也是这样的) ) 当我在做的时候

self.frame.maxX

在我看来,它给了我 maxX + 安全区域 x.. (我查过了)

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

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

编辑:

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

self.bounds.maxX

这个给出了正确的 maxX。

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

谢谢, 大卫

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

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

来自docs

The safe area of a view reflects the area not covered by navigation bars, tab bars, toolbars, and other ancestors that obscure a view controller's view. You obtain the safe area for a view by applying the insets in this property to the view's bounds rectangle.