【问题标题】:Why doesn't self.view.frame.size.width change on the simulator? [duplicate]为什么模拟器上 self.view.frame.size.width 没有变化? [复制]
【发布时间】:2013-07-16 10:37:42
【问题描述】:

我在 ViewDidLoad 中添加了这条语句:

NSLog(@"Screen resolution: (%f, %f)", self.view.frame.size.width, self.view.frame.size.height);

这是我在模拟器的“设备”属性为“iPhone”时得到的结果:

屏幕分辨率:(320.000000, 548.000000)

当我将它设置为“iPhone (Retina 4-inch)”时也是如此:

屏幕分辨率:(320.000000, 548.000000)

但是为什么呢?屏幕分辨率不应该不一样吗?

【问题讨论】:

  • 因为视图的自动调整大小已关闭?

标签: objective-c cocoa-touch ios4


【解决方案1】:

这是因为分辨率是以点而不是像素为单位打印的

对于视网膜显示屏1 point = 2 pixels

对于常规显示1 point = 1 pixel

【讨论】:

    【解决方案2】:

    您应该使用UIScreen 来检查屏幕分辨率:

    [[UIScreen mainScreen] bounds].size.height
    [[UIScreen mainScreen] bounds].size.weight
    

    这里的其他答案提到分辨率是用点而不是像素来衡量的。

    【讨论】:

    • 这不是他要的。只要高度是 548.000000,他就会打印正确的高度
    • @GeorgeSach 在他的日志中写道屏幕分辨率......并非所有视图都使用屏幕尺寸定义,并且可能会产生看似不正确的结果。他也没有说明他期望的分辨率(也许他知道点/像素分辨率)和 iPhone 4 英寸视网膜和 iPhone 之间的分辨率高度应该不同
    猜你喜欢
    • 1970-01-01
    • 2014-10-01
    • 2013-05-03
    • 2011-11-15
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    相关资源
    最近更新 更多