【问题标题】:How to load images with high Res in UIscrollView如何在 UIscrollView 中加载高分辨率图像
【发布时间】:2013-09-24 10:38:11
【问题描述】:

谁能告诉我如何在 UIScrollVIew 中加载或设置高分辨率图像。 我收到内存警告,应用程序在没有任何堆栈跟踪的情况下崩溃。 提前谢谢你。

【问题讨论】:

  • 请定义高分辨率。
  • 你一次加载多少张图片?
  • 一次 3 张图像 .. 仍然应用在设备上崩溃但在模拟器中工作。

标签: iphone ios uiscrollview uiimageview


【解决方案1】:

我还在开发一个具有UIScrollView 并且必须请求高分辨率图像的应用程序。问题是,您应该首先检查正在下载的图像的大小。比方说,如果图像大小超过 10MB,那么您的应用将难以承受如此重的负载。

您可以考虑以下方法。

1.下载图片并压缩。

2.在特定的时间实例,没有必要一次用所有图像填充你的滚动视图数组,而是尝试只有三个图像,即

1.当前正在显示的。

2.上一个。

3.和当前图片旁边的图片。

您也可以通过链接获得帮助 http://www.raywenderlich.com/10518/how-to-use-uiscrollview-to-scroll-and-zoom-content

【讨论】:

  • 谢谢 vaibhav_15 .. 我找到了降低图像分辨率的方法。 '代码' + (UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize { UIGraphicsBeginImageContext(newSize); [图像 drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext();返回新图像; }
【解决方案2】:

您应该使用延迟加载的概念。正如您所说,您使用了 UIScrollView 这意味着您有很多图像,我想您一次一个或两个或三个地显示它们。仅加载用户可见的图像。您必须维护的另一件事是,当用户滑动到下一个图像或图像的下一个分支时,这意味着下一个图像将对用户可见。在加载新图像之前的那个时候,从内存中释放所有以前加载的图像。希望能解决你的问题。

【讨论】:

    【解决方案3】:

    如果您尝试在UIScrollView 中创建多个高分辨率图像UIImageView,则会产生内存警告并且应用程序将崩溃。

    我会建议你尝试可重复使用的 UIImageView ,例如创建 3 个 UIImageView 并替换其中的图像。

    尝试循环滚动视图。linkUICollectionView

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-11
      • 2017-08-23
      • 2015-03-12
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      相关资源
      最近更新 更多