没有安全区域无法查看 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.
我正在尝试获取用于计算的视图的 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.