在通用应用程序中使用@ 2x视网膜图像用于ipad?苹果更喜欢原生应用吗?

sha*_*oga 12 iphone universal-binary ipad

我知道有一些关于此的讨论,但我找不到好的答案?

我的问题是 -

  1. 我知道 -

      [UIImage imageNamed:@"blabla"]
    
    Run Code Online (Sandbox Code Playgroud)

将自动搜索要在iPhone上显示的正确图像(视网膜或非视网膜).

我有一个通用应用程序,我希望在ipad上使用@ 2x版本,所以我不必加载其他版本的图像(我有数百个小图像).

可能吗 ?

  • 我在一些地方看到人们写道苹果不鼓励使用环球应用,因为它更喜欢为iPhone和iPad构建独立的应用程序?即使我为每个人创建不同的UI,这是正确的吗?

谢谢

SHANI

小智 66

如果您要加载名为"image"的图像,搜索路径可能与以前一样:

苹果手机:

  • 1)image@2x~iphone.png(仅限视网膜)
  • 2)image@2x.png(仅限视网膜)
  • 3)image~iphone.png
  • 4)image.png

iPad的:

  • 1)image@2x~ipad.png(仅限视网膜)
  • 2)image@2x.png(仅限视网膜)
  • 3)image~ipad.png
  • 4)image.png


Bog*_*tyr 17

没有很好的内置方式不会复制iPad的更高分辨率的视频图像.您可以编写自己的UIImage扩展或子类,使用用户界面idiom宏来确定您的平台,然后自动将"@ 2x"附加到图像名称:

+ (UIImage *) imageNamedSmart:(NSString *)name
{
    if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad )
        return [UIImage imageNamed:[NSString stringWithFormat:@"%@@2x.png", name]];
    return [UIImage imageNamed:[NSString stringWithFormat:@"%@.png", name]];
}
Run Code Online (Sandbox Code Playgroud)

你会这样称呼它:

[UIImage imageNamedSmart:@"myImage"]
Run Code Online (Sandbox Code Playgroud)