【问题标题】:Memory question: photo gallery using UIImageView, NSArray & SwipeGesture vs UIScrollview内存问题:使用 UIImageView、NSArray 和 SwipeGesture 与 UIScrollview 的照片库
【发布时间】:2011-02-21 06:58:32
【问题描述】:

我正在为 iphone 和 iPad 开发一个应用程序 - 它的核心是一个照片库。我希望能够一张一张地显示多达 80 张全屏图像,并带有向左或向右滑动功能。

我知道我可以使用带有 NSArray 和 SwipeGesture 的 UIImageView 来做到这一点,但也可以使用 UIScrollview 来实现。

快速提问 - 哪种方式使用的内存最少,或者在查看图像后有效地从内存中释放图像?

任何帮助表示赞赏。

另外,是否有 youtube 或在线分步教程显示如何在这种情况下执行 UIScrollView?

谢谢!

【问题讨论】:

    标签: iphone cocoa-touch memory uiscrollview nsarray


    【解决方案1】:

    就使用最少的内存而言,无论哪种方式,您都必须使用交换方法,因此您在任何时候都只有 2-3 个图像在内存中。我发现使用更多的东西会很快达到设备的极限。

    我会使用UIScrollView,因为它会感觉更自然。如果您使用 SwipeGesture,那么用户将无法将当前图像稍微向左/向右移动并获得漂亮的橡皮筋效果。 (好吧,您可以使用UIGestureRecognizer 重现它,但这需要更多的工作)。花一些时间使用内置的照片应用程序,看看我的意思。不松手向左/右拉一张图片就可以看到旁边的图片了。

    此外,不要忘记是否要允许缩放每张图像以及滑动到下一张/上一张。

    有关帮助您入门的教程,请参见此处:http://cocoawithlove.com/2009/01/multiple-virtual-pages-in-uiscrollview.html。应该足以让您入门。

    【讨论】:

      【解决方案2】:

      效率取决于您处理图像的方式。与此相比,基于滑动手势交换 UIImageViews 与包含 UIImageViews 的分页 UIScrollView 交换的效率微乎其微。

      您可以将 UIImage 的内存占用保持在最低限度。实际上,这可能意味着在您认为合适的时候将一个或两个图像加载到当前显示的 UIImage 的任一侧,并释放之前可能已经加载的更远距离的图像。如果你想走滑动手势路线,这个时间就是你检测到滑动手势的时候。如果您选择分页 UIScrollView 路由,UIScrollViewDelegate 方法之一将是一个好地方。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-05
        • 2010-10-12
        • 2012-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-03
        相关资源
        最近更新 更多