2011-02-23 22 views
12

我知道这里有一些讨论,但我找不到好的答案?在通用应用程序中使用@ 2x视网膜图像为ipad?苹果是否喜欢原生应用?

我的问题是 -

  1. 我知道 -

    [UIImage imageNamed:@"blabla"] 
    

会自动搜索iPhone上的正确的图像显示(视网膜与否)。

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

是否有可能?

  • 我在某些地方看到人们写道,苹果不喜欢通用应用程序,因为它倾向于为iPhone和iPad构建分离的应用程序?即使我为每个用户创建不同的用户界面,这种方式是否正确

感谢

SHANI

+0

为什么苹果更喜欢不同的iPad和iPhone应用?作为用户,通用应用程序对我来说更吸引人。 – 2011-02-23 09:27:21

+0

这就是为什么我认为当决定去通用应用程序,但我在一些地方看到它,只是想确保 – shannoga 2011-02-23 09:30:05

回答

17

没有复制的iPad的更高的水库iPhone视网膜图像没有很好的内置方式。你可以写一个使用用户界面成语宏来确定您的平台自己的UIImage分机或子类,然后自动“@ 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]]; 
} 

,你会这样称呼它:

[UIImage imageNamedSmart:@"myImage"] 
+0

嘿已经尝试过,但它没有奏效。 – shannoga 2011-02-23 10:32:30

+0

哪部分没有工作? – Bogatyr 2011-02-23 11:40:58

+0

嘿,我的错误。事实是,那是我第一次尝试。但我很愚蠢,试图在一个观点,我仍然没有@ 2x的图像。谢谢任何方式:) – shannoga 2011-02-24 05:41:57

0

也许你可以复制所有图像资源[email protected]到图像〜ipad.png。 请注意“〜ipad.png”的情况。 但是你必须用Cap来手动管理拉伸图像(stretchableImageWithLeftCapWidth:topCapHeight :)。

3

我通过检查视网膜图像是否存在改进了Bogatyr的回答。可能不是非常必要,但我发现测试时很有用,所以我可以创建一个图像文件。

+ (UIImage *) imageNamedSmart:(NSString *)name { 
    NSFileManager *fileManager = [[[NSFileManager alloc] init] autorelease]; 
    NSString *retinaFileName = [NSString stringWithFormat:@"%@@2x", name]; 

    NSString *filePath = [[NSBundle mainBundle] pathForResource:retinaFileName ofType:@"png"]; 

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad && [fileManager fileExistsAtPath:filePath]) { 
     return [UIImage imageNamed:[retinaFileName stringByAppendingString:@".png"]]; 
    } 
    return [UIImage imageNamed:[NSString stringWithFormat:@"%@.png", name]]; 
} 
67

如果你加载一个名为“图片”搜索路径很可能是一样的,他们一直是图像:

iPhone:

  • 1)图像@ 2X〜iphone.png(仅视网膜)
  • 2)[email protected](视网膜只)
  • 3)图像〜iphone.png
  • 4)image.png

ipad公司:

  • 1)图像2×@〜ipad的。PNG(视网膜只)
  • 2)[email protected](仅视网膜)
  • 3)图像〜ipad.png
  • 4)image.png
+0

如果这可行,这应该是选定的答案。这太棒了。当然,你可能想要指出,这只适用于4.0+。 http://stackoverflow.com/a/5535913/362730 – Tim 2012-11-18 18:48:04

+0

另外 - 这意味着如果你有普通的iPhone尺寸,Retina iPhone尺寸和普通的iPad图形,那么视网膜iPad会喜欢在普通iPad图形之前加载Retina iPhone图形? – Tim 2012-11-18 19:01:37

+0

iPhone中的区别是什么:1)[email protected]~iphone.png(仅限视网膜)2)[email protected](仅限视网膜) – hariszaman 2015-07-14 09:36:13

相关问题