处理背景图像的不同iphone屏幕尺寸/分辨率

时间:2013-03-27 15:10:09

标签: ios ios5 uiimage iphone-5 screen-size

我想更好地了解iPhone的分辨率等。

我有一个具有基本buttonView和logoView的应用程序。我输出了logoView的高度,它会根据屏幕尺寸自动调整高度。

对于iphone5我有318可以使用。 对于iphone4(<)我有230可以使用。

我的问题是,我该如何处理用于此视图背景的图像。我会为以下内容创建一个三个单独的图像吗? -iphone3等(230) -iphone4视网膜(230尺寸,@ 2) -iphone5视网膜(328尺寸,@ 2)

或者我只创建2x 230图像,当使用iphone5并且有更多空间可用时,我可以将图像拉伸到318吗?

3 个答案:

答案 0 :(得分:7)

这一切都取决于你的形象:

  • 如果您的图像可以拉伸,UIImageView将完成所有工作。
  • 如果只有一部分图像应该被拉伸,您应该使用:
    • imageView.image = [imageView.image resizableImageWithCapInsets:UIEdgeInsetsMake(top, left, bottom, right)];
  • 如果您的图像无法拉伸,则应为手机执行不同的图像并在运行时更改它们。

<强>更新

最后一点,您可以在viewDidLoad方法中执行以下操作:

BOOL isIPhone = [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone;
BOOL isIPhone5 = isIPhone && ([[UIScreen mainScreen] bounds].size.height > 480.0);
if (isIPhone5) {
   imageView.image = [UIImage imageNamed:@"iphone4image.png"];
} else {
    imageView.image = [UIImage imageNamed:@"iphone5image.png"];
}

答案 1 :(得分:7)

iOS 8针对不同的屏幕有不同的大小类。它在这里解释得非常好。每个iOS开发人员都应该完成这个link

答案 2 :(得分:3)

如果您想让它更简洁一点,您可以使用宏来考虑更长的屏幕尺寸。

#define ASSET_BY_SCREEN_HEIGHT(regular, longScreen) (([[UIScreen mainScreen] bounds].size.height <= 480.0) ? regular : longScreen)

使用示例:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.splashScreenImageView.image = [UIImage imageNamed:ASSET_BY_SCREEN_HEIGHT(@"Default", @"Default-568h")];
}