设置 UITableViewCell 的宽度

Set the width of UITableViewCell

我想创建水平 space 的 UITableView,如下所示:

所以我找到了解决方案here

但它似乎不起作用函数 'setFrame' 不适用于 iOS9,所以我找到了另一个使用 layoutSubviews

的建议
override func layoutSubviews() {
    super.layoutSubviews()

    self.contentView.frame = UIEdgeInsetsInsetRect(self.bounds, UIEdgeInsetsMake(0, 10, 0, 10))
}

但它也不起作用我得到的是:

那么如何正确添加水平 space,我正在使用 Swift 2Xcode7Storyboard 和自定义 UITableViewCell

我认为您不应该尝试更新 contentView 的框架。您应该在 contentView 下添加一个视图(作为父视图),然后将所有约束应用于该 UIView。

好的,下面是制作自定义单元格的一种方法。

您可以将 TableView 的背景颜色设置为灰色。

然后在你的自定义原型 UITableViewCell

  1. 将背景颜色设置为透明。
  2. 将 UIView 拖到它上面并将其颜色更改为白色或您喜欢的任何颜色。
  3. 将视图到单元格的左、右、上、下约束设置为至少 5。
  4. 确保使用委托方法设置自动高度,然后估计高度,如果您的单元格将具有动态高度。
  5. 同时删除 table 视图中的分隔符,这样就没有行了。
  6. 在视图中,您可以放置​​标签以添加文本。

我认为这应该符合您的目的,让我知道进展如何:)

请不要尝试更改 contentView 的框架,Apple 并未说明这是可能的。这里有几个选项,按优先顺序排列:

  • 这就是 UICollectionView 的目的。 UICollectionView 使更改各种单元格之间的流程变得完全微不足道。考虑将您的实现切换为使用 UICollectionView 并查看 subclassing UICollectionViewFlowLayout(或者直接在 IB 中设置您的布局)
  • 如果您必须使用 UITableView:创建一个 class 来封装您希望位于单元格中的视图。然后让您的 table 视图宽度为屏幕宽度,单元格为内容高度加上垂直边距。使用适当的插入框架将视图直接添加到单元格的 contentView

您可以尝试对单元格进行子类化并覆盖 setFrame:

- (void)setFrame:(CGRect)frame {
   frame.origin.x += inset;
   frame.size.width -= 2 * inset;
   [super setFrame:frame];
}

如果您在 Xib 中使用自定义表格视图单元格,您也可以尝试此解决方案

第 1 步:右键单击单元格 xib step2:打开为>源代码 第 3 步:尝试找到 <tableViewCellContentView> 标签部分。 step4: 在<tableViewCellContentView>下方找到autoresizingMask标签,在<autoresizingMask>标签中添加widthSizable="YES" 例如

`<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="1Ah-hd-rCV" id="Xqs-eb-z8W">`

    `<autoresizingMask key="autoresizingMask" widthSizable="YES"/>`
`</tableViewCellContentView>`

设置后就是上面的代码了

因为 tableviewcell 的内容视图不会自动调整宽度,所以您必须为此编写代码。如上。

并且如果您通过编程添加单元格,那么这将无济于事,您必须为 tableviewCell 创建 xib,并且在情节提要中这将起作用,您还必须正确打开源代码点击故事板。

UIView 放入 tableViewCell 并使单元格 background 清晰并使 tableview 变灰而不是将其背景颜色设置为灰色并调整要显示的 UIView 的大小,然后 在自动调整掩码中水平拉伸

希望这对您有所帮助。 谢谢!