【问题标题】:Xcode 7 : Autolayout to UICollectionViewCell that are generated programmaticallyXcode 7:以编程方式生成的 UICollectionViewCell 的自动布局
【发布时间】:2016-12-14 04:18:45
【问题描述】:

我有一个 CollectionView,它在运行时生成九个 collectionview 单元格(以编程方式设置)。

Storyboard 中只有一个 CollectionView Cell。

我有疑问如何将约束设置为 Cell 以使其如屏幕截图所示。

【问题讨论】:

    标签: ios xcode storyboard uicollectionviewcell nslayoutconstraint


    【解决方案1】:

    对于集合视图,您可以从情节提要设置线条和单元格之间的距离。 最初您需要设置行和单元格的最小间距。

    然后您需要根据设备的宽度为单元格设置动态宽度, 并确保从该宽度中减去 2*minimum 间距。如果有左侧或右侧的部分,还减去部分插图。

    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    return CGSizeMake((Device_Width/3.0)-2*(Minimum cell spacing+section_insets.left), 120.0)
    
    //for iphone 4 in my case
    

    // return CGSizeMake((320/3.0)-(2*1)-2(10),100.0) }

    设备宽度是设备的宽度。 您在情节提要中设置的最小单元格间距 section_inset.left 也符合情节提要的值。

    【讨论】:

    • 我已经得到了这个结果,但我想要自动布局。
    • 您可能需要设置标签(1 - 9)和图像(X),您可以将两者的约束设置为 center Horizo​​ntal 和 center vertical 。因此,如果单元格宽度将通过代码增加,那么两者都将位于中心。
    【解决方案2】:

    因为您的布局显示每行将有 3 个单元格。您需要将集合视图宽度除以 3 加上分隔符空间。一种好方法是使用自动布局将集合视图左上角底部附加。并使用以标签为中心的虚拟单元格。您需要以编程方式处理此委托。

     - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
    {
        CGFloat screenWidth = collectionViewFrame.size.width;
        float cellWidth = screenWidth / 3.0 - 20; //Replace the divisor with the column count requirement. Make sure to have it in float.
        CGSize size = CGSizeMake(cellWidth, cellWidth);
    
        return size;
    }
    

    【讨论】:

    • Swift 中的等效版本是什么?我找不到它。
    • 这是 swift 等效版本。 func collectionView(collectionView : UICollectionView,layout collectionViewLayout:UICollectionViewLayout,sizeForItemAtIndexPath indexPath:NSIndexPath) -> CGSize
    猜你喜欢
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 2016-03-16
    • 1970-01-01
    相关资源
    最近更新 更多