UICollectionViewCell填充

Stu*_*tuR 8 objective-c uicollectionview uicollectionviewcell

我试图在集合视图单元格上设置零填充,我在视图控制器上设置了"Min Spacing":

在此输入图像描述

然而,细胞之间仍然存在差距:

在此输入图像描述

我也喜欢它,以便细胞根据框架的宽度很好地包裹,例如每个单元格宽50px,所以如果有六个单元格并且我将框架宽度设置为150px,它将显示两行三细胞.

然而,如果我通过执行以下操作将帧宽度设置为150:

- (void)viewDidLoad
{
    [super viewDidLoad];

    CGRect frame = self.collectionView.frame;
    frame.size.width = 150;
    self.collectionView.frame = frame;
}
Run Code Online (Sandbox Code Playgroud)

它看起来像在上面的屏幕截图(太宽).

如果我把它设置为像10这样可笑的小东西,它会在某种程度上包裹起来:

在此输入图像描述

UICollectionViewCell设置为50 x 50:

在此输入图像描述

我还尝试以编程方式设置单元格的大小,还删除了UIEdgeInset:

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
    return UIEdgeInsetsMake(0, 0, 0, 0);
}
Run Code Online (Sandbox Code Playgroud)

我已禁用自动布局,只是有任何干扰.关于如何移除衬垫并根据框架宽度/高度进行包装的任何建议?

jrt*_*ton 3

您正在使用 UICollectionViewController,它与 UITableViewController 一样,以集合视图(或表视图)为基础view视图控制器的基本属性。这意味着它不能在视图控制器内调整大小;它的大小由它的超级视图控制 - 在本例中,要么是窗口,将其作为根视图控制器,要么是父视图控制器(如果您嵌入它)。

如果要缩小集合视图区域以使单元格彼此相邻,则可以修改情节提要中集合视图的部分插图。在你的例子中,左右各 15 个的插入将单元格聚集在一起 - 这是 9 * 50 (450) 加 30 = 480,这是 3.5 英寸 iPhone 的横向宽度。

显然,这在 iPhone 5 或 iPad 上会有所不同。您可以在运行时计算插图,使用标准 UIViewController 子类中保存的集合视图,或者将 UICollectionViewController 作为嵌入式视图控制器保存。后两者使您只需指定大小,这可能比计算插图更好。