UICollectionView,只是适合单元格宽度?

时间:2014-07-23 16:01:37

标签: ios uicollectionview uicollectionviewcell

这是一个黄色的简单UICollectionView

enter image description here

红色箭头设置单元格的宽度。 (TBC:点击粉红色单元格:对于'尺寸'选择'默认',然后您在红色箭头处设置的内容将成为单元格的大小。)

示例,对于直立的iPhone设置宽度为320。

但这看起来很疯狂......当然我可以根据UICollectionView的宽度设置单元格宽度

自动调整视图本身没有问题。

enter image description here

工作正常。

但似乎很疯狂,我不能将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
    }

事实上 - 你必须在代码中这样做吗?!在故事板,自动布局或其他任何事情都无法做到这一点?!

3 个答案:

答案 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)

我的案例单元格插件制作了额外的形状enter image description here