我正在做一个游乐场项目,正在向屏幕绘制图形的过程,无法理解不同的视图尺寸。我在操场上使用以下代码:
class MyViewController : UIViewController {
override func loadView() {
let view = UIView()
drawScreen = CustomView()
drawScreen!.autoresizingMask = [.flexibleWidth, .flexibleHeight]
view.addSubview(drawScreen!)
self.view = view
}
}
PlaygroundPage.current.liveView = MyViewController()
然后打印出以下对象的边界和比例因子:
Bounds of 'view': (0.0, 0.0, 375.0, 668.0)
Scale Factor of 'view': 1.0
Bounds of 'UIScreen.main': (0.0, 0.0, 768.0, 1024.0)
Coordinate Space of 'UIScreen.main': <UIScreen: 0x7fd07bb03130; bounds = {{0, 0}, {768, 1024}}; mode = <UIScreenMode: 0x600001341940; size = 1536.000000 x 2048.000000>>
Scale Factor of 'UIScreen.main': 2.0
Bounds of 'drawScreen': (0.0, 0.0, 375.0, 668.0)
Scale Factor of 'drawScreen': 2.0
当我通过传递给draw()的rect绘制矩形时,它会绘制一个具有屏幕大小的完美矩形(从实时视图中判断)。传递的rect是(pt)(375.0,668.0),并且“ drawScreen”的比例因子是2.0,这意味着该视图的像素单位是(750,1336)。
然后,如果我们查看有关MyViewController
的视图变量的输出。 (375.0,668.0)是以pts为单位的边界,比例因子是1.0,像素的(375.0,668.0)也是如此。从这里开始我的困惑,subView怎么会比父视图大?
现在让我们看一下UIScreen.main
,边界为(768.0,1024.0),比例因子为2.0,这导致(1536.000000 x 2048.000000)像素与坐标空间中的“大小”匹配。但是,如果返回到我正在绘制的矩形的大小(375.0 x 668.0pt或750 x 1336px),则不仅与绑定大小不匹配,而且长宽比也有所不同。
我认为我正在绘制的矩形给出了正确的尺寸(750 x 1336px),因为它与操场上的实时取景完全匹配。
我一直在寻找答案,但找不到答案,UIScreen.main
是“代表设备屏幕的屏幕对象”。我只是想对此有所了解,
谢谢!