奇怪的“Retina” iOS 模拟器行为。

8
上周我将Lion更新到Mountain Lion之后,在iOS模拟器上发现了一个非常奇怪的问题。第一张图片展示了普通模拟器,第二张展示了“视网膜”模拟器。有谁知道如何解决这个问题吗?我尝试删除并重新安装Xcode,但没有成功。
普通模拟器: Normal simulator 视网膜模拟器: Retina simulator 谢谢提前任何帮助!
编辑:这不是iPad模拟器。这是“设备”菜单的屏幕截图。 Devices Tab

2
我有Xcode 4.4,所以不可能是它的问题。而且“重置内容和设置”也不起作用。真是太烦人了! - Raphael Caixeta
由于该问题并不常见,可能非常局限于您的特定环境。您尝试过在升级到Mountain Lion后重新安装Xcode 4.4吗?如果没有,请尝试这样做。 - Till
1
很抱歉你遇到了这个问题,但我很高兴它发生在其他人身上。现在我知道不仅仅是我有这个问题!我认为这是4.4版本中的某种错误。 - Mick MacCallum
你有Retina MacBook Pro吗? - Fabian Kreiser
这只是你的应用程序还是模拟器上的Springboard? - j_mcnally
显示剩余6条评论
3个回答

1

我曾经遇到过同样的问题,尝试在您的Mac上更改显示分辨率。我使用的是Retina Mac,所以需要稍微调整一下。

Xcode确实为Retina提供了不同的模拟器,但看起来他们内置了逻辑,使一个模拟器具有更高的分辨率。


我最近遇到了这个问题,并确认在我的情况下与我的项目代码无关。根据您模拟器的屏幕分辨率,它将提供不同的用户界面。例如,在我的Thunderbolt显示器上,它显示了iPad类似的边框界面,适用于iPhone(Retina 4英寸)。在我的Retina MacBook Pro屏幕上,相同的设置将显示类似于iPhone 5的界面。注意:我必须更改设备版本才能在另一个显示器中看到受影响的更改。 - Ethan Mateja

0
这里最重要的症状是,您的UI占用了与标准分辨率iPhone显示时预期相同的空间。另一个重要症状是您的UILabel看起来变得模糊 - 这通常表明UILabel没有接收到屏幕的正确比例,特别是如果进行了光栅化。
当您在应用程序委托中初始化应用程序(didFinishLaunchingWithOptions)时,请检查是否已经将UIWindow或UIWindow的rootViewController的边界硬编码为标准iPhone分辨率(即320x480)。这些应该使用[[UIScreen mainScreen] bounds]设置,而不是硬编码实际点。实际上,您应该寻找应用程序中任何硬编码屏幕尺寸的地方 - 搜索字符串“ 320”和“ 480” - 这些数字永远不应出现在您的代码中。
另一种可能性是您将某些视图设置为光栅化(layer.shouldRasterize = YES),但您尚未将layer.rasterizationScale设置为主屏幕的比例(即[[UIScreen mainScreen] scale],在Retina情况下为2.0)。当我没有正确设置比例时,我也看到了同样类型的模糊UILabel。

我知道你在帖子中提到这个问题只发生在操作系统更新后,所以这可能不是问题的原因,但为了确保万无一失,我建议你检查一下。

更新:再想一想,虽然直接编码这些边界是不好的做法,但它不会导致这个问题,因为这些边界是iPhone的正确逻辑边界,操作系统会自动进行缩放。所以在这两个建议之间,更有可能的原因是某个与缩放相关的属性设置错误。另外一个可能性是你是否使用了UIView的contentScaleFactor,并且设置不正确。


-3

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

硬件 -> 设备


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接