collectionView cell大小自定义(storyboard)

在iOS开发中,通过Objective-C实现collectionView的cell大小自定义,关键在于故事板设置Estimate Size为none,并通过代理方法调整。代码实现展示,确保cell能根据屏幕宽度适配显示。
摘要由CSDN通过智能技术生成

1. 首先是在storyboard自定义了一个cell。《一定要主要Estimate Size设置为none,不然就算你使用了代理方法,还是会按照storyboard的大小显示给你的。》

2.delegate,dataSource,都是在storyboard设置的哦。

3.接下来是代码(.m文件):~~


//#pragma mark - UICollectionViewDelegateFlowLayout

//

-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{



    CGFloat width = (CGRectGetWidth(collectionView.bounds)-10*3)/2;

    CGFloat Height = (CGRectGetHeight(collectionView.bounds)-10*3)/2;

    NSLog(@"width: %f %f",width,Height);

    return CGSizeMake(width, Height);

}

// 定义每个Section的四边间距

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout ins
可以通过使用 UICollectionView自定义 UICollectionViewFlowLayout 来实现 Swift Storyboard 中的九宫格布局。 首先,在 Storyboard 中添加一个 UICollectionView,并设置其约束以适应屏幕大小和位置。然后,添加一个 UICollectionViewCell 并设置其大小和样式。接下来,创建一个自定义的 UICollectionViewFlowLayout,并将其应用于 UICollectionView。在自定义的 UICollectionViewFlowLayout 中,可以通过设置每个单元格的大小、间距和对齐方式来实现九宫格布局。最后,在 ViewController 中实现 UICollectionViewDataSource 和 UICollectionViewDelegate 来填充和处理 UICollectionView 中的数据和事件。 下面是一个简单的示例代码,用于在 Swift Storyboard 中创建九宫格布局的 UICollectionView: ```swift class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout { @IBOutlet weak var collectionView: UICollectionView! let cellReuseIdentifier = "cell" let itemsPerRow: CGFloat = 3 let sectionInsets = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10) var items = ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7", "Item 8", "Item 9"] override func viewDidLoad() { super.viewDidLoad() collectionView.dataSource = self collectionView.delegate = self collectionView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: cellReuseIdentifier) } // MARK: - UICollectionViewDataSource func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return items.count } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellReuseIdentifier, for: indexPath) cell.backgroundColor = UIColor.blue return cell } // MARK: - UICollectionViewDelegateFlowLayout func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { let paddingSpace = sectionInsets.left * (itemsPerRow + 1) let availableWidth = collectionView.frame.width - paddingSpace let widthPerItem = availableWidth / itemsPerRow return CGSize(width: widthPerItem, height: widthPerItem) } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { return sectionInsets } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat { return sectionInsets.left } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat { return sectionInsets.left } } ``` 在这个示例中,我们创建了一个包含 9 个单元格的 UICollectionView,并使用自定义的 UICollectionViewFlowLayout 实现了九宫格布局。同时,我们还实现了 UICollectionViewDataSource 和 UICollectionViewDelegateFlowLayout 来处理 UICollectionView 中的数据和布局。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值