重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
根据网上的一些资料,封装了一套完美的瀑布流分类,下面看源码吧
常州网站制作公司哪家好,找成都创新互联公司!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设公司等网站项目制作,到程序开发,运营维护。成都创新互联公司于2013年开始到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联公司。
下面是JYWaterfallLayout.h头文件
接下来是JYWaterfallLayout.m文件
相信这个可以解决一般的瀑布流使用问题.也欢迎大牛指教
[img]UICollectionView的API风格和UITableView很像,除了dataSource和delegate,UICollectionView还多了一个属性:collectionViewLayout,它负责控制UICollectionView的布局,所以下面的重点就是这个collectionViewLayout
用普通的addSubview之间添加到tableView上,只是在设置frame时要将y相对于tableView为负值,当前还不能看见,在设置完成后,将tableview的视图contentOffset偏移向下头布局的高度,应该就可以了。。。
解决办法
主要要做到一下几个方面:
除了UI部分,所有的加载操作都在后台完成。
这一点可以通过dispatch或者performSelectorInBackground或者NSOperationQueue来实现。见:
在iOS开发中利用GCD进行多线程编程
iOS开发中使用NSOperationQueue进行多线程操作
避免后台加载完成多个资源之后集中到达占用UI线程的处理时间太长。
这一点可以通过NSOperationQueue来实现,将资源到UI的展现过程放在队列中逐个执行,且在每个操作完成之后进行强制等待,可以用usleep(int microSeconds)来解决。
重用cell。
创建cell一般是很慢的,一定要重用,甚至为了performance,可以在view创建之初就创建足够多的cell在重用队列中。
原因:
滑动太快,可能同时就发出了比如10个图片请求。这些请求虽然都在后台运行,但是它们可能在同一个时间点返回UI线程。这个时候如果加载图片到UIImageView太频繁,就会造成UI卡得严重。