我有一个关于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()
}
}
模拟器
问题是viewDidLoad
在视图达到其最终大小之前运行。此时视图存在;它还没有被布置出来。直到viewDidLayoutSubviews
才会发生这种情况。