iphone 5视网膜显示器的图像

And*_*rey 19 iphone retina-display iphone-5

iPhone 5发布,具有新的屏幕尺寸和分辨率.

当我们使用iPhone 4(视网膜)的图像时,我们只是将"@ 2x"添加到图像名称.任何人都可以告诉我,是否有可能为新的iPhone屏幕添加不同的图像(背景,按钮等)?

第二个问题:我可以在我的应用程序中使用单独的XIB文件:对于旧的iPhone,iPhone新的(如iPhone和iPad)?

谢谢!

Ben*_*ton 50

以下是我的博客中有关此主题的内容:

[UIImage imageNamed:]在视网膜设备上运行时会自动加载@ 2x版本的图像.不幸的是,imageNamed:在iPhone 5上运行时不会自动加载-568h @ 2x版本的图像.

有时这没关系,例如iPhone 4和5上的图标和非全屏图形可能是相同的.但是,如果你有全屏背景图像,或工具栏等的全宽/高度背景图像,你会有问题.你的480高图像很可能会被拉伸(结果可能看起来很可怕).

您可以手动检查屏幕大小并加载正确的图像,如下所示:

UIImage* myImage;
CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height;
if ([UIScreen mainScreen].scale == 2.f && screenHeight == 568.0f) {
   myImage = [UIImage imageNamed:@"myImage-568h.png"];
} else {
   myImage = [UIImage imageNamed:@"myImage.png"];
}
Run Code Online (Sandbox Code Playgroud)

有一种方法可以改变UIImage imageNamed,因此它可以自动加载正确的图像.请参阅以下链接了解详情.

更多内容:http://pervasivecode.blogspot.co.uk/2012/09/making-apps-work-on-iphone-5-screen-size.html

编辑:@Sound Blaster和@GrizzlyNetch 对的,在代码中你应该使用imageNamed:@"myImage-568h.png"],但实际的文件名应该是myImage-568h@2x.png.如果你不这样做,那么比例是不正确的,就像他们说的那样.

  • 我认为,正确的图像名称是'myImage-568h.png' - 没有@ 2x (2认同)
  • 另一种解决方案可以在这里找到http://angelolloqui.com/blog/20-iPhone5-568h-image-loading (2认同)

rck*_*nes 11

iPhone 5不会引入新的像素密度,因此您可以使用之前使用过的所有视网膜图像.

所有你需要支持iPhone 5的新分辨率是让你的窗口视图.对于大多数视图,如tableview和scrollview,这不会出现任何问题.

此外,不需要为新分辨率添加额外的XIB文件,这也是不受支持的.

只需添加Default-568h@2x.png到您的应用程序包,使iOS 6让您的应用程序占用iPhone 5中的额外空间.

所有本机控件(如选项卡栏)的行为都与您期望的一样.

如果您希望在应用程序中支持iOS4.3和5.*,请确保Use Autolayout在nib设置(界面构建器中的第一个选项卡)中关闭.

然后确保正确设置视图 autoresizingMask