2

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

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

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

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

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

4

3 回答 3

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"];
}
于 2013-03-27T15:46:38.647 回答
7

iOS 8 对不同的屏幕有不同的尺寸等级。这里解释得很好。每个 iOS 开发者都应该通过这个链接

于 2014-09-17T10:16:50.923 回答
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")];
}
于 2014-08-20T19:28:20.377 回答