这是一个黄色的简单UICollectionView
红色箭头设置单元格的宽度。 (TBC:点击粉红色单元格:对于'尺寸'选择'默认',然后您在红色箭头处设置的内容将成为单元格的大小。)
示例,对于直立的iPhone设置宽度为320。
但这看起来很疯狂......当然我可以根据UICollectionView的宽度设置单元格宽度?
自动调整视图本身没有问题。
工作正常。
但似乎很疯狂,我不能将CELL的宽度设置为"与视图"相同。似乎很难相信人们必须在代码中手动设置它?
TBC换句话说,正如尼基塔指出的那样,
-(CGSize) collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
return self.view.frame.size;
}
(事实上你通常也需要这个......)
-(UIEdgeInsets)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout*)collectionViewLayout
insetForSectionAtIndex:(NSInteger)section
{
return UIEdgeInsetsMake(0,0,0,0); //t,l,b,r
}
事实上 - 你必须在代码中这样做吗?!在故事板,自动布局或其他任何事情都无法做到这一点?!
答案 0 :(得分:31)
我认为你需要看看
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
UICollectionViewLayout
的,您可以根据方向和当前帧设置大小。
看起来你只需要在代码中执行此操作。
答案 1 :(得分:1)
有一种简单的方法可以做到这一点。这是快速的代码。假设您想要一个项目宽,在示例中我的单元格高64位,我想要8个侧边距,最后collectionView是您的UICollectionView的名称。
将其插入viewDidLoad:
let layout = collectionView?.collectionViewLayout as! UICollectionViewFlowLayout
layout.itemSize = CGSize.init(width: (UIScreen.main.bounds.width - 16), height: 64.0)
这会将所有单元格设置为默认大小。如果您继承UICollectionViewLayout或UICollectionViewFlowLayout,您仍然可以覆盖单个单元格,如其他答案中所述。但是如果你只是希望有更多的表视图,就像行为一样,这应该有用。
答案 2 :(得分:-2)