如何将收集单元视图设置为动态拉伸到iphone屏幕宽度(例如iphone 5s,iphone 6 plus)?
我试过了:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
cellForItemAtIndexPath:(NSIndexPath *)indexPath {
(ResultCell *)[collectionView dequeueReusableCellWithReuseIdentifier:cellClass
forIndexPath:indexPath];
cell.bounds = CGRectMake(0,0, self.view.bounds.size.width, 150);
return cell;
}
这不起作用。我没有看到内容延伸到屏幕的右侧。
我尝试添加此委托方法:
- (CGSize)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
CGSize cellSize;
cellSize.width = self.view.bounds.size.width;
// body view height
cellSize.height = 150;
return cellSize;
}
我在方法中设置了断点,但该方法永远不会被调用?
答案 0 :(得分:13)
我对同一个用例有同样的问题。我终于结束了
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
return CGSizeMake(collectionView.bounds.size.width, 150);
}
这会更改集合视图的每个项目(单元格)的大小。因此,您可以使用此更改每个单元格的大小。在这里,我需要单元格宽度与我的UICollectionView相同,所以我传递了UICollectionview的宽度和我想要的特定高度。希望这会有所帮助。
此外,无需在- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
中设置单元格边界,因为尺寸是通过- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
设置的
还要确保已将所需的Delegates & DataSources
附加到UICollectionView
答案 1 :(得分:1)
单元格的大小由集合视图的布局对象指定。你使用的是UICollectionViewFlowLayout
吗?尝试设置布局对象的itemSize
属性或实现委托方法:collectionView:layout:sizeForItemAtIndexPath:
您将能够指定项目(单元格)相对于集合视图边界的大小。
请记住,您的集合视图也需要设置,以便随视图控制器调整大小。如果您正在使用应自动设置的UICollectionViewController。否则,您必须将集合视图约束到其超级视图的边界。
<强>更新强>
您可以直接在布局上设置布局的itemSize
属性:
self.layout.itemSize = CGSizeMake(CGRectGetWidth(self.collectionView.bounds), 100);
或,(如果您正在处理轮换或调整大小,则更好),实施适当的委托回调:
- (CGSize)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
return CGSizeMake(CGRectGetWidth(collectionView.bounds), 100);
}
我建议您阅读相应的UICollectionView
文档,以便更加熟悉集合视图及其布局的工作方式: