呈现视图控制器时如何在 iOS13 中获取可见视图大小

How to get the visible view size in iOS13 when presenting a view controller

在 iOS13 中,呈现视图控制器的默认方式已更改为 "sheets/cards" 视图。由于我没有使用自动布局(为什么不使用,这并不重要和相关),我依赖于根据视图的框架获取元素的位置。

现在,新方法的问题是,视图框架不再真正反映屏幕上可见的实际内容大小。例如。如果我根据 view.frame 底部坐标将 UIButton 定位在视图控制器的底部,它现在将被切断,因为视图实际上向下移动了漂亮的 "sheets/cards" 视觉量顶部的指示。同样的问题在 iPad 中更为明显,其中在视图控制器视图中居中另一个视图将被偏移,因为默认的呈现样式现在是 "sheet" 在中间屏幕。

我目前已经更改了所有内容以强制使用全屏版本,但使用新的精美设计会很好。

有人知道如何在不更改自动布局的情况下以新样式获得实际可见的 rect/coordinates 吗?

这是它们的样子。 "flower" 在视图中居中,X 按钮不应太靠近底部或在 iPad 版本中完全缺失。

终于想通了。当我在 viewDidLoad 中设置项目的位置时,框架计算不正确,因此导致布局不正确。重置 viewDidLoadSubviews 中的框架和位置时,位置正确放置。