iPhone 5 视网膜显示屏 2x 图像

标签 iphone ios objective-c

为了将 iPhone 迁移到 Retina 设备,我们必须准备具有双倍分辨率的图像并将其命名为“@2x”,以便 IOS 将自动在 Retina 设备中使用 2x 图像。

我的问题是,如果我违反规则并创建三倍尺寸(或大于两倍尺寸)的图像,但将其命名为“@2x”作为 Apple 监管状态,该怎么办。 Apple 会拒绝我上传到 AppStore 的应用程序吗?

我这样做的原因是当我设置背景图片时,我做了如下:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed: @"background.png"]];

在 iPhone 5 视网膜显示屏中,双倍尺寸的图像无法正确地适合背景,因为 iPhone 5 的高度不仅仅是双倍尺寸,它就像双倍尺寸加上额外的像素。这就是为什么我要将背景图像自定义为大于两倍大小的原因。

我真的不想在我的应用程序中添加额外的代码来手动检查设备类型并加载相应的图像,因为 IOS 有这样更好、更方便的方法。

我担心在这种情况下 Apple 会拒绝我的应用吗?

最佳答案

如果您创建尺寸/分辨率“错误”的图像,Apple 不会拒绝您的应用。但是,这样做通常没有意义。

@2x是表示分辨率的意思,iPhone 4/4S和iPhone 5的分辨率是一样的。唯一的区别在于屏幕的高度。

此外,您应该为大型背景图像使用 UIImageView(更好的内存管理和性能)。

将此添加到您的类文件或项目的前缀文件中:

#define deviceIsIPhone5 ([UIScreen mainScreen].applicationFrame.size.height == 568 ? YES : NO)

在你的viewDidLoad(或类似的地方):

if (deviceIsIPhone5) 
{
    self.backgroundImage.image = [UIImage imageNamed:@"background-568h@2x.png"];
} 
else
{
    self.backgroundImage.image = [UIImage imageNamed:@"background@2x.png"];
}

关于iPhone 5 视网膜显示屏 2x 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16033582/

相关文章:

ios - 核心数据并从 AnyObject 类型制作 double ? swift

ios - 用自定义运算符替换枚举的 rawValue 属性

ios - 向 UITextView 添加阴影会使文本扩展到 UITextViewFrame 之外

objective-c - 给予 NSTextField 焦点 -?

iphone - CL位置距位置的距离

ios - TableView 单元格没有推送到下一个 View Controller

通过 FCM 的 iOS 严重警报

iOS:renderInContext 和横向方向问题

ios - 将 UIColor 值分配给宏

ios - CMStepCounter 不提供步数