This question already has an answer here:
UIView subclass bounds incorrect in console
(1个答案)
去年关门了。
我有一个关于iPad上的UIViews的简短问题。我在UIViewController主视图的顶部创建了一个新视图,并添加了值为0的左、右、上和下约束,以覆盖整个视图。
运行完应用程序后,正如预期的那样,我在整个主视图的顶部看到了灰色视图。
奇怪的是,当我将两个视图打印到stdout时,两个视图的框架宽度和高度值都不同:
主视图:
宽768.0高1024.0
第二个视图:
宽375.0高667.0
我不明白,为什么这些值不相等,因为两个视图在运行时大小相同,灰色的第二个视图的宽度大于375。
我的主要方法是在第二个灰色视图上添加一个AVPlayerLayer作为背景视频。但当我这样做时,视频并没有覆盖全屏,而是覆盖了375x667。
import UIKit

class ViewController: UIViewController {

    @IBOutlet var secondView: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()

        print("Main View:")
        print("Width: \(self.view.frame.width), Height: \(self.view.frame.height)")

        print("Second View:")
        print("Width: \(self.secondView.frame.width), Height: \(self.secondView.frame.height)")

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

}

Simulator

最佳答案

问题是viewDidLoad在视图达到最终大小之前运行。这个观点存在于这一点上,尚未被阐明。除非viewDidLayoutSubviews,否则这种情况不会发生。

09-08 03:25