UISplitViewController主视图控制器视图的框架值错误

3
我有一个包含两个自定义视图控制器的UISplitViewController。当我设置主视图控制器并想要获取视图的框架时,它给了我一个完全奇怪的值,并且在将其用于绘制内容时,部分内容会超出屏幕。

这是我在故事板中的设置。

enter image description here

这是绘制主视图控制器的代码。
override func viewDidLoad() {
    super.viewDidLoad()
    view.backgroundColor = UIColor.yellow
}


override func viewDidAppear(_ animated: Bool) {
    print( "view bounds:\(view.frame)")
    let testView = UIView(frame: view.frame.insetBy(dx: 30, dy: 30 ))
    testView.backgroundColor = UIColor.black.withAlphaComponent(0.3)
    view.addSubview( testView )
    
}

这是一张绘制的图片,两个内嵌矩形应该在视图范围内。

enter image description here

有趣的是,当我查看视图层次结构时,PrimaryViewController 的布局显示得很奇怪。

enter image description here

这是一个简单测试项目的链接:

在此输入链接描述

有任何想法如何获取primaryViewController视图的正确框架。
谢谢,
Reza
2个回答

1

我曾经遇到过同样的问题,但通过基于安全区域指南限制进入主视图控制器的所有元素来解决了它。


0

主列包含一个100点的屏幕外缓冲区,可以通过调用视图的safeAreaInsets.left来读取。这将返回一个值为100,并使用此值调整框架可以解决此问题。


请问您能展示一下实现这个功能的代码吗?我不确定这是否是正确的解决方案。同时,我也在 https://stackoverflow.com/q/74162761/1162044 上发布了类似的问题。 - Boris Y.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接