了解操场上的屏幕尺寸

时间:2019-05-14 18:30:05

标签: ios swift xcode

我正在做一个游乐场项目,正在向屏幕绘制图形的过程,无法理解不同的视图尺寸。我在操场上使用以下代码:

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是“代表设备屏幕的屏幕对象”。我只是想对此有所了解,

谢谢!

0 个答案:

没有答案