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。
Simulator
(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