【问题标题】:ios6 UIImageView - Loading -568h imageios6 UIImageView - 加载-568h图像
【发布时间】:2012-09-24 14:47:48
【问题描述】:

我看过几篇关于 UIImage 在新 iOS6 中自动加载 filename-568.png 图像的帖子,但我似乎无法在 UIImageView 类中重新创建它。 p>

我正在使用 Storyboard(不是我的应用程序,只需要进行一些检查),并且我有一个简单的布局,只有图像视图缩放以适​​应,视图控制器中没有代码,我确定filename.pngfilename-568h.png 存在(以及 -568@2x.png 以防万一)但是当我加载它在iOS6模拟器中。这适用于 iOS 4 和 5,为视网膜加载 @2x 图像,但在 iOS6 中似乎不起作用。有任何想法吗?

该图像恰好被称为 Default.png,因为它与启动图像相同,这可能是问题吗?

提前感谢您的帮助

【问题讨论】:

标签: ios6


【解决方案1】:

iOS6 不会像处理 @2x 图像那样自动加载 -568h。唯一的例外是默认屏幕,但您必须自己手动设置 568h 图像。

我创建了一些代码来模拟 -568h 图像在使用 [UIImage imageNamed:@""] 方法时的加载行为,但从 IB 中我不知道方法。如果您对此类解决方案感兴趣,请查看http://angelolloqui.com/blog/20-iPhone5-568h-image-loading

【讨论】:

  • 其实我发现如果我在IB中指定图片为“image.png”,那么无论我使用什么类型的手机模拟器,它都会加载正确的文件,[@2x ] 用于 3.5" 视网膜,[-568h@2x] 用于 4" 视网膜。如果我尝试使用 [UIImage imageNamed:] 自己编写代码,则它不起作用。奇怪的。我将不得不像上面的@Angel Garcia Olloqui 那样做。
  • 我尝试了你的代码,虽然它在模拟器中运行良好,但它不能为真实设备编译。 的#include 编译失败。
  • 我在代码中没有得到一件事:最后返回相同的方法,不会创建递归循环?
  • 关于递归循环。检查一下,我正在调整方法,所以您看到的递归循环不是递归循环!它实际上是对原始方法的调用。只需在您的项目中包含该类并像以前一样使用所有内容。无需更改您的代码,因为我解释的方法是混用的,而且它的性能更好,因为这只发生在 iPhone5 设备上。
  • 您可能希望在此问题的所选答案中查看有关如何处理从 Interface Builder 加载这些图像的信息。 stackoverflow.com/questions/10398547/…
【解决方案2】:

通常,您应该只使用 568h 作为启动图像。如果您发现自己在应用中为新的显示高度使用了不同的图片资源,您应该考虑到您可能使您的 UI 过于静态。

人们希望将 568h 用于图像的最明显的地方是背景图像。另一种方法是只拥有一个具有最大可能尺寸的资源,并使用 UIView 的 contentMode 属性将其正确对齐。

但也许你在图像的顶部和底部有浮动的东西,所以 contentMode 不能解决它。你可以认为顶部和底部浮动可能应该是单独的视图。

请记住,我们一直在制作高度可变的应用程序。每次弹出键盘,就好像屏幕缩小了一样。

【讨论】:

  • 我不同意你的最后一句话,键盘显示在视图的顶部,它根本不会缩小视图。 iOS 正确检测 -568h 资源是有道理的,因为它确实处理 @2x 图像并且操作系统本身需要 -568h 用于启动画面。我认为它迫使我们编写糟糕的代码来处理 iPhone 5 的屏幕比例。
  • 如果您觉得 Apple 强迫您“编写糟糕的代码”,您可能应该退后一步,看看您是否不必要地违反了任何 Apple 约定。在 iOS 中,这通常会导致更多的工作,更少的回报。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-02
  • 1970-01-01
  • 1970-01-01
  • 2016-09-25
  • 2013-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多