以编程方式创建UICollectionView

以编程方式创建UICollectionView

我正在寻找一个指南或教程,它将向我展示如何仅使用代码设置一个简单的UICollectionView。

我正在浏览苹果网站上的文档,我也在使用参考手册

但我真的可以从一个简单的指南中受益,它可以告诉我如何设置UICollectionView而不必使用Storyboard或XIB / NIB文件 - 但不幸的是,当我搜索时,我能找到的只是具有故事板的教程。


阿晨1998
浏览 547回答 3
3回答

萧十郎

头文件: -@interface&nbsp;ViewController&nbsp;:&nbsp;UIViewController<UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>{ &nbsp;&nbsp;&nbsp;&nbsp;UICollectionView&nbsp;*_collectionView;}实施档案: --&nbsp;(void)viewDidLoad{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[super&nbsp;viewDidLoad]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.view&nbsp;=&nbsp;[[UIView&nbsp;alloc]&nbsp;initWithFrame:[[UIScreen&nbsp;mainScreen]&nbsp;bounds]]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UICollectionViewFlowLayout&nbsp;*layout=[[UICollectionViewFlowLayout&nbsp;alloc]&nbsp;init]; &nbsp;&nbsp;&nbsp;&nbsp;_collectionView=[[UICollectionView&nbsp;alloc]&nbsp;initWithFrame:self.view.frame&nbsp;collectionViewLayout:layout]; &nbsp;&nbsp;&nbsp;&nbsp;[_collectionView&nbsp;setDataSource:self]; &nbsp;&nbsp;&nbsp;&nbsp;[_collectionView&nbsp;setDelegate:self]; &nbsp;&nbsp;&nbsp;&nbsp;[_collectionView&nbsp;registerClass:[UICollectionViewCell&nbsp;class]&nbsp;forCellWithReuseIdentifier:@"cellIdentifier"]; &nbsp;&nbsp;&nbsp;&nbsp;[_collectionView&nbsp;setBackgroundColor:[UIColor&nbsp;redColor]]; &nbsp;&nbsp;&nbsp;&nbsp;[self.view&nbsp;addSubview:_collectionView]; &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Do&nbsp;any&nbsp;additional&nbsp;setup&nbsp;after&nbsp;loading&nbsp;the&nbsp;view,&nbsp;typically&nbsp;from&nbsp;a&nbsp;nib.}-&nbsp;(NSInteger)collectionView:(UICollectionView&nbsp;*)collectionView&nbsp;numberOfItemsInSection:(NSInteger)section{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;15;}//&nbsp;The&nbsp;cell&nbsp;that&nbsp;is&nbsp;returned&nbsp;must&nbsp;be&nbsp;retrieved&nbsp;from&nbsp;a&nbsp;call&nbsp;to&nbsp;-dequeueReusableCellWithReuseIdentifier:forIndexPath:-&nbsp;(UICollectionViewCell&nbsp;*)collectionView:(UICollectionView&nbsp;*)collectionView&nbsp;cellForItemAtIndexPath:(NSIndexPath&nbsp;*)indexPath{ &nbsp;&nbsp;&nbsp;&nbsp;UICollectionViewCell&nbsp;*cell=[collectionView&nbsp;dequeueReusableCellWithReuseIdentifier:@"cellIdentifier"&nbsp;forIndexPath:indexPath]; &nbsp;&nbsp;&nbsp;&nbsp;cell.backgroundColor=[UIColor&nbsp;greenColor]; &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;cell;}-&nbsp;(CGSize)collectionView:(UICollectionView&nbsp;*)collectionView&nbsp;layout:(UICollectionViewLayout*)collectionViewLayout&nbsp;sizeForItemAtIndexPath:(NSIndexPath&nbsp;*)indexPath{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;CGSizeMake(50,&nbsp;50);}输出---

POPMUISE

对于swift4用户: -class&nbsp;TwoViewController:&nbsp;UIViewController,&nbsp;UICollectionViewDataSource,&nbsp;UICollectionViewDelegateFlowLayout,&nbsp;UICollectionViewDelegate&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;override&nbsp;func&nbsp;viewDidLoad()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super.viewDidLoad() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.collectionView&nbsp;=&nbsp;UICollectionView(frame:&nbsp;self.view.bounds,&nbsp;collectionViewLayout:&nbsp;flowLayout) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;collectionView.register(UICollectionViewCell.self,&nbsp;forCellWithReuseIdentifier:&nbsp;"collectionCell") &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;collectionView.delegate&nbsp;=&nbsp;self &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;collectionView.dataSource&nbsp;=&nbsp;self &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;collectionView.backgroundColor&nbsp;=&nbsp;UIColor.cyan&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self.view.addSubview(collectionView) &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;func&nbsp;collectionView(_&nbsp;collectionView:&nbsp;UICollectionView,&nbsp;numberOfItemsInSection&nbsp;section:&nbsp;Int)&nbsp;->&nbsp;Int&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;20 &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;func&nbsp;collectionView(_&nbsp;collectionView:&nbsp;UICollectionView,&nbsp;cellForItemAt&nbsp;indexPath:&nbsp;IndexPath)&nbsp;->&nbsp;UICollectionViewCell&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;cell&nbsp;=&nbsp;collectionView.dequeueReusableCell(withReuseIdentifier:&nbsp;"collectionCell",&nbsp;for:&nbsp;indexPath&nbsp;as&nbsp;IndexPath) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cell.backgroundColor&nbsp;=&nbsp;UIColor.green&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;cell&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;func&nbsp;collectionView(collectionView:&nbsp;UICollectionView,&nbsp;layout&nbsp;collectionViewLayout:&nbsp;UICollectionViewLayout,&nbsp;sizeForItemAtIndexPath&nbsp;indexPath:&nbsp;NSIndexPath)&nbsp;->&nbsp;CGSize&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;CGSize(width:&nbsp;50,&nbsp;height:&nbsp;50) &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;func&nbsp;collectionView(collectionView:&nbsp;UICollectionView,&nbsp;layout&nbsp;collectionViewLayout:&nbsp;UICollectionViewLayout,&nbsp;insetForSectionAtIndex&nbsp;section:&nbsp;Int)&nbsp;->&nbsp;UIEdgeInsets&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;UIEdgeInsets(top:&nbsp;5,&nbsp;left:&nbsp;5,&nbsp;bottom:&nbsp;5,&nbsp;right:&nbsp;5) &nbsp;&nbsp;&nbsp;&nbsp;}}

四季花海

对于Swift 2.0而不是实现绘制以下方法所需的方法CollectionViewCells:func&nbsp;collectionView(collectionView:&nbsp;UICollectionView,&nbsp;layout&nbsp;collectionViewLayout:&nbsp;UICollectionViewLayout,&nbsp;sizeForItemAtIndexPath&nbsp;indexPath:&nbsp;NSIndexPath)&nbsp;->&nbsp;CGSize &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;CGSizeMake(50,&nbsp;50); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;func&nbsp;collectionView(collectionView:&nbsp;UICollectionView,&nbsp;layout&nbsp;collectionViewLayout:&nbsp;UICollectionViewLayout,&nbsp;insetForSectionAtIndex&nbsp;section:&nbsp;Int)&nbsp;->&nbsp;UIEdgeInsets &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;UIEdgeInsetsMake(5,&nbsp;5,&nbsp;5,&nbsp;5);&nbsp;//top,left,bottom,right &nbsp;&nbsp;&nbsp;&nbsp;}使用&nbsp;UICollectionViewFlowLayoutfunc&nbsp;createCollectionView()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;flowLayout&nbsp;=&nbsp;UICollectionViewFlowLayout() &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Now&nbsp;setup&nbsp;the&nbsp;flowLayout&nbsp;required&nbsp;for&nbsp;drawing&nbsp;the&nbsp;cells &nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;space&nbsp;=&nbsp;5.0&nbsp;as&nbsp;CGFloat &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Set&nbsp;view&nbsp;cell&nbsp;size &nbsp;&nbsp;&nbsp;&nbsp;flowLayout.itemSize&nbsp;=&nbsp;CGSizeMake(50,&nbsp;50) &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Set&nbsp;left&nbsp;and&nbsp;right&nbsp;margins &nbsp;&nbsp;&nbsp;&nbsp;flowLayout.minimumInteritemSpacing&nbsp;=&nbsp;space&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Set&nbsp;top&nbsp;and&nbsp;bottom&nbsp;margins &nbsp;&nbsp;&nbsp;&nbsp;flowLayout.minimumLineSpacing&nbsp;=&nbsp;space&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Finally&nbsp;create&nbsp;the&nbsp;CollectionView &nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;collectionView&nbsp;=&nbsp;UICollectionView(frame:&nbsp;CGRectMake(10,&nbsp;10,&nbsp;300,&nbsp;400),&nbsp;collectionViewLayout:&nbsp;flowLayout) &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Then&nbsp;setup&nbsp;delegates,&nbsp;background&nbsp;color&nbsp;etc. &nbsp;&nbsp;&nbsp;&nbsp;collectionView?.dataSource&nbsp;=&nbsp;self &nbsp;&nbsp;&nbsp;&nbsp;collectionView?.delegate&nbsp;=&nbsp;self &nbsp;&nbsp;&nbsp;&nbsp;collectionView?.registerClass(UICollectionViewCell.self,&nbsp;forCellWithReuseIdentifier:&nbsp;"cellID") &nbsp;&nbsp;&nbsp;&nbsp;collectionView?.backgroundColor&nbsp;=&nbsp;UIColor.whiteColor() &nbsp;&nbsp;&nbsp;&nbsp;self.view.addSubview(collectionView!)}然后UICollectionViewDataSource根据需要实现方法:func&nbsp;collectionView(collectionView:&nbsp;UICollectionView,&nbsp;numberOfItemsInSection&nbsp;section:&nbsp;Int)&nbsp;->&nbsp;Int&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;20; &nbsp;&nbsp;&nbsp;&nbsp;}func&nbsp;collectionView(collectionView:&nbsp;UICollectionView,&nbsp;cellForItemAtIndexPath&nbsp;indexPath:&nbsp;NSIndexPath)&nbsp;->&nbsp;UICollectionViewCell&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;cell:UICollectionViewCell=collectionView.dequeueReusableCellWithReuseIdentifier("collectionCell",&nbsp;forIndexPath:&nbsp;indexPath)&nbsp;as&nbsp;UICollectionViewCell; &nbsp;&nbsp;&nbsp;&nbsp;cell.backgroundColor&nbsp;=&nbsp;UIColor.greenColor(); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;cell;}func&nbsp;numberOfSectionsInCollectionView(collectionView:&nbsp;UICollectionView)&nbsp;->&nbsp;Int&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;#warning&nbsp;Incomplete&nbsp;implementation,&nbsp;return&nbsp;the&nbsp;number&nbsp;of&nbsp;sections &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1}
打开App,查看更多内容
随时随地看视频慕课网APP