怪异的“Retina”iOS模拟器行为

时间:2012-08-02 18:10:56

标签: ios ios-simulator osx-mountain-lion

我上周将Lion更新为Mountain Lion,从那以后,在iOS模拟器上得到了这个非常奇怪的错误。第一张图显示常规模拟器,第二张显示“Retina”模拟器。有谁知道如何解决这一问题?我尝试删除Xcode并重新安装,但没有运气。

普通模拟器:

Normal simulator

Retina模拟器:

Retina simulator

提前感谢您的帮助!

编辑:这不是iPad模拟器。这是“设备”菜单的屏幕截图。

Devices Tab

3 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,请尝试更改Mac上的显示分辨率。我正在使用Retina Mac,所以不得不玩一下。

Xcode确实为视网膜提供了不同的模拟器,但看起来它们是在逻辑中构建的,可以在一个模拟器中获得更高的分辨率。

答案 1 :(得分:0)

这里最重要的症状是你的UI正好占据了显示到标准分辨率iPhone时所期望的空间量。另一个重要的症状是你的UILabel看起来被淘汰的方式 - 这通常表明UILabel没有接收到正确的屏幕比例,特别是如果光栅化。

当您在app delegate(didFinishLaunchingWithOptions)中初始化应用程序时,请检查您是否已将用于UIWindow的UIWindow或rootViewController的边界硬编码为标准iphone分辨率(即320x480)。应使用[[UIScreen mainScreen] bounds]设置,而不是硬编码为实际点。实际上,您应该在应用中寻找硬编码屏幕尺寸的任何地方 - 搜索字符串“320”和“480” - 这些数字应该永远不会出现在您的代码中。

另一种可能性是您已将某些视图设置为栅格化(layer.shouldRasterize = YES),但您尚未将layer.rasterizationScale设置为主屏幕的比例(即[[UIScreen mainScreen]比例],这将是Retina背景下的2.0)。当我没有正确设置比例时,我已经看到了同样的泥泞的UILabel。

我认识到,因为你的帖子说这个改变只发生在你的操作系统更新之后,这些可能不是问题,但只是为了更加确定,我会检查它们。

更新:第二个想法,硬编码那些边界,这是不好的做法,不会导致这个问题,因为这些是iPhone正确的逻辑界限,操作系统可以为您扩展。因此,在这两个建议之间,更可能的罪魁祸首是某些与规模相关的属性设置不正确。另一种可能性是,如果您正在使用UIView contentScaleFactor并将其设置错误。

答案 2 :(得分:-3)

这是iPAd模拟器。将其更改为iPhone。

  

硬件>设备