仅在 UIScrollView 内的正确位置加载可见内容

Posted

技术标签:

【中文标题】仅在 UIScrollView 内的正确位置加载可见内容【英文标题】:Loading only visible content on correct position inside UIScrollView 【发布时间】:2016-01-30 17:37:09 【问题描述】:

我有一个 UIScrollView,我想在其中添加大量子视图。每张图片都是 256x256 像素。 ScrollView 的 ContentSize 为 8.192 像素,因此这将是 32x32 图像。我只想加载 UIImages / 创建我目前看到的 UIImagesViews。我可能必须使用 scrollViewDidScroll 并通过 contentOffset 确定该图像的正确位置。 图片在服务器上,我异步加载它们。文件夹结构是“Images/Row/Column/row_column.jpg”,其中行和列将替换为实际数字,例如"图片/4/2/4_2.jpg"

我想坚持使用 UIScrollView,因为它给了我比 UICollectionView 更多的可能性。

希望你能指引我正确的方向。

【问题讨论】:

UICollectionView + SDWebImage 应该可以实现你想要的。 我需要缩放,所以没办法 好像UICollectionView可以支持缩放***.com/questions/13485617/… 【参考方案1】:

我认为您可能希望看到的方向是实现 UICollectionViewUICollectionViewFlowLayout 以响应捏合缩放手势。那是困难的部分。然后最简单的部分是实现您的数据源,UICollectionView 使用它来延迟加载其单元格(您的图像)。

我没有看过这个视频,但是通过 Google 快速搜索找到了它:

https://www.youtube.com/watch?v=8vB2TMS2uhE

【讨论】:

再一次,如果您希望它更像一堵图片墙,您可以放大和缩小它,这可能不是最好的解决方案。您可能会想到 UICollectionViewUITableView 实现的模式——数据源和委托——找出一种使用 scrollViewDidScroll 延迟加载图像视图的方法 问题是我想添加更多功能,如平移、转动、缩放、滚动。本质上,它将是一张虚构的地图。带导航功能 查看我的评论并查看UITableViewDelegate/UITableViewDataSource 的设计——它们遵循的模式可能是您想要开始的地方。表格视图是滚动视图的子类,本质上是观察滚动中的变化以确定它应该向其数据源询问哪些视图并在内容视图中进行绘制。【参考方案2】:

我最终为我的用例编写了一个完整的自定义框架,它缓存并仅加载我需要的图像。

我没有使用 josefdlange 假设的 UICollectionView

感谢您的帮助。

【讨论】:

以上是关于仅在 UIScrollView 内的正确位置加载可见内容的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView 内的 UIWebView 框架不会拉伸大小以适应所有内容

UITableView 内的 UIScrollView 无法正确显示/隐藏(Xcode iPhone)

ios - 单元格表格视图内的视图位置仅在滚动后才会更改

iOS - UICollectionViewCell 内的 UIScrollView - 内部视图的动画不正确(延迟)

UIScrollView 内的自动布局 UITextView 大小不正确

触摸开始后 UIScrollview 位置移动