2022-03-23

[转载] 通过 xib 创建自定义 UICollectionViewCell

云抱住阳光太阳没放弃发亮关注

0.072017.04.18 09:39:14字数 180阅读 4,639

原文链接: http://jingsan0801.farbox.com/post/swift/tong-guo-xibchuang-jian-zi-ding-yi-uicollectionviewcell

首先创建一个xib

之后会生成一个.swift和.xib文件,xib文件中是一个已经画好的View,我们要做的就是在这个View中布局cell中的控件,比如要增加一个Label和Button

并对这个xib中的view设置属性,包括identifier和custom class

然后在CustomCollectionViewCell中,将控件与变量建立关联,方法与在storyBoard中一样

CustomCollectionViewCell.swift

importUIKitclassCustomCollectionViewCell:UICollectionViewCell{@IBOutletweakvarlabel:UILabel!@IBOutletweakvarokBtn:UIButton!overridefuncawakeFromNib(){super.awakeFromNib()// 在这里实现对控件的布局}}

最后在ViewController.swift中加载这个cell,并对CollectionView的属性进行自定义

ViewController.swift

importUIKitclassViewController:UIViewController,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout{// UICollectionViewDelegateFlowLayout已经实现了UICollectionViewDelegate: public protocol UICollectionViewDelegateFlowLayout : UICollectionViewDelegate@IBOutletweakvarcollectionView:UICollectionView!privateletcellIdentifier="collectionCell"overridefuncviewDidLoad(){super.viewDidLoad()self.collectionView.dataSource=selfself.collectionView.delegate=self// 从nib中注册cell,适用于通过xib创建cell的情况;如果是通过代码创建的cell,则使用registerClass方法collectionView.registerNib(UINib(nibName:"CustomCollectionViewCell",bundle:nil),forCellWithReuseIdentifier:cellIdentifier)}overridefuncdidReceiveMemoryWarning(){super.didReceiveMemoryWarning()// Dispose of any resources that can be recreated.}// UICollectionViewDataSourcefuncnumberOfSectionsInCollectionView(collectionView:UICollectionView)->Int{return1}funccollectionView(collectionView:UICollectionView,numberOfItemsInSection section:Int)->Int{return10}funccollectionView(collectionView:UICollectionView,cellForItemAtIndexPath indexPath:NSIndexPath)->UICollectionViewCell{letcell=collectionView.dequeueReusableCellWithReuseIdentifier(cellIdentifier,forIndexPath:indexPath)as!CustomCollectionViewCellcell.label.text="success"returncell}// UICollectionViewDelegateFlowLayoutfunccollectionView(collectionView:UICollectionView,layout collectionViewLayout:UICollectionViewLayout,sizeForItemAtIndexPath indexPath:NSIndexPath)->CGSize{returnCGSize(width:200,height:200)}funccollectionView(collectionView:UICollectionView,layout collectionViewLayout:UICollectionViewLayout,minimumInteritemSpacingForSectionAtIndex section:Int)->CGFloat{return5.0}funccollectionView(collectionView:UICollectionView,layout collectionViewLayout:UICollectionViewLayout,minimumLineSpacingForSectionAtIndex section:Int)->CGFloat{return1.0}funccollectionView(collectionView:UICollectionView,layout collectionViewLayout:UICollectionViewLayout,insetForSectionAtIndex section:Int)->UIEdgeInsets{//        let frame : CGRect = self.view.frame//        let margin  = (frame.width - 90 * 3) / 6.0returnUIEdgeInsetsMake(1,1,10,1)// margin between cells}}

最终效果图

原文链接: http://jingsan0801.farbox.com/post/swift/tong-guo-xibchuang-jian-zi-ding-yi-uicollectionviewcell

你可能感兴趣的:(2022-03-23)