Closed gaohomway closed 6 years ago
用UICollectionView是用它的复用cell能力呀。如果只用UIScrollView做翻页,而又没有复用机制,在图片多时内存占用就好大
我在尝试用此库浏览本地图片,有五千张图片,当我添加数据到500张左右时已经崩溃,我是取PHAsset全分辨率图像,也许是我使用方法不对...
我在尝试写一个类似的图片浏览库,思路是用UIScrollView作为浏览图主容器,始终维持三张图,当前显示页,以及左右隐藏页,所以即便五千张,始终维持三张的内存。
本不想重复发明轮子,你的库很强大,但是封装的有点过度,我很认真的在看,还是整理不透,比如扩展视频浏览,支持播放,以及扩展照片编辑功能,需要对你的代码做大量的改动,决定基于你的重新一份。
几百张图以上的情况,我确实没关注。崩溃的原因你有没找到?我也试着找找看。然后上面提到的视频播放,我还有点计划,至于照片编辑功能,我想已经超出这个库的范围,应在另外的地方实现。若有需要提供帮助的地方,我尽量有时间就想想看。
图片量大时候的崩溃,不是collectionView问题,是图片对象创建方法问题,应该是存在大量UIImage在内存中没有释放
@JiongXing 是的,是我使用错误的问题。 最近我在尝试重写图片浏览库,关于图片间距的问题和你分享一下,希望更新到此库里。
效果如下 Photo Browser Video
说明 仔细观察图与图直接无间距,而是多了一层白色视图,左右滑动时图片移出和移走由白色的视图决定,此效果和iPhone原生照片浏览效果相同。
整体布局采用UIScrollView,白色的间隔竖条是UIView,根据UIScrollViewDelegate中scrollViewDidScroll代理方法控制间隔条的位置,可以解决 图间空隙与边缘吸附 的问题,你就可以直接使用collectionView.isPagingEnabled = true来解决吸附的问题。
实现方式
public func scrollViewDidScroll(_ scrollView: UIScrollView) {
var x = scrollView.contentOffset.x
var newX: CGFloat = 0
let z = Int(x/boundW)
x = x - CGFloat(z) * boundW
if x <= 0 {
x = 0
}
newX = (boundW - x) + (boundW - x) * 30 / boundW - 30
spacingView.frame = CGRect(x: newX, y: 0, width: 30, height: boundH)
}
优化 此库功能非常强大,代码优雅,只是感觉还有优化的空间,还可以整合不必要的方法,希望能有所调整。
感谢支持与建议,我稍后再细看下
您好,新版已完全重构,有空请更新到2.0看看~
好的,一定膜拜。 写了一个Android版的, Android有基础库支持,比swift简洁很多,需要可以看一下 PhotoBrowse
不错,赞
看了设计思路,非常棒的设计思路,优在细节! 不太理解为什么UICollectionView中嵌套UIScrollView? UIScrollView就可以解决翻页,以及放大等问题,出于什么原因用了UICollectionView呢?