我上周将Lion更新为Mountain Lion,从那以后,在iOS模拟器上得到了这个非常奇怪的错误。第一张图显示常规模拟器,第二张显示“Retina”模拟器。有谁知道如何解决这一问题?我尝试删除Xcode并重新安装,但没有运气。
普通模拟器:
Retina模拟器:
提前感谢您的帮助!
编辑:这不是iPad模拟器。这是“设备”菜单的屏幕截图。
答案 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。
硬件>设备