在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
collectView 也是 iOS 很常用的瀑布流展示控件了,虽然使用过很多次,一直没有系统的总结过,尤其是在添加header 和footer view 的时候,很常见,写起来总觉得不是很流畅,这里着重备份下,留待备用…… 这里贴上最终的成品样子:
刚刚做demo 做了好久,这个控件,我也是醉了……,既然做完了,写步骤。。。。。。
在铺设下自己创建的类: 再次提示 这个 header 和footer 一定要分开继承,刚刚自己就是在这里 耽搁了大部分的时间
约束完成之后,主要提示下 ,自己耽误这么长时间,做这个demo 的主要知识点吧: 1.在 storybord 写的view 布局,不用在 vc里面注册( regest 之类的 )了,这个是比较省事的 2.我还没有在storybord 找到 collectcell 的 layout 设置项,所以直接贴上layout 代码了,(如果真的有这个设置,希望找到后在回来修改……)
我果然还是习惯撸代码,语言不是我强项……唉,不懂的时候,再偷偷看注释吧 collectCell 类: class CollectionViewCell: UICollectionViewCell { /** collect header and footer import UIKit class CollectionHeader: UICollectionReusableView { /** import UIKit class CollectionFooter: UICollectionReusableView { var footerButtonClick:((UIButton)->Void)? @IBAction func didFooterButtonClick(_ sender: UIButton) { if self.footerButtonClick != nil { self.footerButtonClick!(sender ) } } } view controller 类 import UIKit class ViewController: UIViewController , UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout { @IBOutlet weak var myCollectionView: UICollectionView! lazy var collectArr : Array<String> = { var arr = Array<String>() for i in 0...26{ var str = String(format:"%c",putchar(64 + i)) arr.append(str) } return arr }() /** flow layout */ func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize{ return CGSize.init(width: self.view.frame.size.width/3-30, height: 50) } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets{ return UIEdgeInsets.init(top: 5, left: 5, bottom: 5, right: 5) } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForFooterInSection section: Int) -> CGSize{ return CGSize(width:self.view.frame.size.width,height:60) } /** data source */ func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { return 1 } func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return self.collectArr.count } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "collectCell", for: indexPath) as! CollectionViewCell cell.textButton.setTitle(self.collectArr[indexPath.item], for: .normal) return cell } /** delegate */ func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { collectionView .deselectItem(at: indexPath, animated: true) }
终于写完了,有补充的积极给我留言……
|
请发表评论