【问题标题】:How to set an image based on iphone platform in objective-c如何在objective-c中设置基于iphone平台的图像
【发布时间】:2011-02-23 23:23:28
【问题描述】:

当我为应用商店做准备时,我正在将我的应用程序从 3.x 移动到 4.x,并发现我需要拥有所有自定义 png 的 2 个副本 - 我的问题是如何确定要显示的 img什么时候。示例 - 我怎么知道显示 Find.png 与 Find@2x.png

寻找 4.x 特定的 api 是“安全”还是“正确”,还是 iphone 有办法确定您在运行时使用的平台?

提前谢谢你

【问题讨论】:

    标签: objective-c


    【解决方案1】:

    当您使用标准 API 时,手机会在必要时处理抓取 @2x 版本。例如,如果您使用[UIImage imageNamed:@"Find.png"]; 并在 iPhone 4 上运行,它会自动加载 Find@2x.png。

    【讨论】:

    • 我假设界面生成器执行 [UIImage imageNamed:@"Find"]; @2x 是免费的吗?对吗?
    • 是的,在 Interface Builder 中添加的图像也具有自动 @2x 行为。
    【解决方案2】:
    [[UIDevice currentDevice] model];
    [[UIDevice currentDevice] systemName];
    [[UIDevice currentDevice] systemVersion];
    

    Detect retina screen/iPhone 4 in iPhone SDK

    【讨论】:

      【解决方案3】:

      如果您使用UIImageimageNamed: 方法,则@2x 业务将为您处理。

      否则你可以检查屏幕的比例,如this question

      【讨论】:

        【解决方案4】:

        如果您的应用程序在(我相信)iOS 4.2 或更高版本上运行并且图像是 PNG 文件,您可以替换以下调用:

        [UIImage imageNamed:@"Find.png"];
        

        简单地说:

        [UIImage imageNamed:@"Find"];
        

        在更高版本的操作系统上,imageNamed 尝试将传入参数视为图像的根名称,而不是特定图像名称本身。在这种情况下,它具有内置智能,可以加载最适合设备的图形。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-30
          • 1970-01-01
          • 2016-11-14
          • 1970-01-01
          • 2013-12-08
          • 1970-01-01
          相关资源
          最近更新 更多