设置UITableViewCell的宽度

时间:2015-09-21 22:31:23

标签: ios uitableview uistoryboard swift2

我想用这样的水平空间创建UITableView

enter image description here

所以我找到了解决方案here

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

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

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

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

enter image description here

那么如何添加正确的水平空间,我使用Swift 2Xcode7Storyboard使用自定义UITableViewCell

5 个答案:

答案 0 :(得分:11)

好的,所以这是制作自定义单元格的一种方法。

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

然后在您的自定义原型UITableViewCell

  1. 将背景颜色设置为透明。
  2. 在其上拖动UIView并将其颜色更改为白色或任何您喜欢的颜色。
  3. 将约束从左视图,右视图,上限和下限设置为从视图到细胞的至少5个。
  4. 如果单元格具有动态高度,请确保使用委托方法设置自动高度,然后设置估计高度。
  5. 同时删除表格视图中的分隔符,以便没有行。
  6. 在视图中,您可以删除标签以添加文字。
  7. 我认为这应该符合你的目的,让我知道它是怎么回事:)

答案 1 :(得分:4)

请不要试图改变contentView的框架,Apple没有声明这是可能的。这里有几个选项,按优先顺序排列:

  • 这是为UICollectionView而构建的。 UICollectionView使得改变各个单元格之间的流量变得非常简单。考虑切换您的实现以使用UICollectionView并查看子类化UICollectionViewFlowLayout(或直接在IB中设置您的布局)
  • 如果必须使用UITableView:创建一个封装您希望在单元格中的视图的类。然后让您的表格查看屏幕的宽度,单元格的内容高度加上垂直边距。使用适当的插入框架将您的视图直接添加到单元格contentView

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

您也可以尝试此解决方案如果您在Xib中使用自定义tableview单元格而不是

步骤1:右键单击单元格xib 步骤2:打开为&gt;源代码 第3步:尝试查找<tableViewCellContentView>标记部分。 第4步:在autoresizingMask下方找到<tableViewCellContentView>标记,在widthSizable="YES"标记中添加<autoresizingMask> 例如

`<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的内容视图没有自动调整宽度,所以你必须为此编码。像上面一样。

如果您通过编程添加单元格而不是这样就无法帮助您创建 xib for tableviewCell ,而在故事板中,您也可以通过右键单击storyboard来打开源代码。< / p>

UIView 放在 tableViewCell 中,并将单元格背景清除,并将tableview设置为灰色,而不是将其背景颜色设置为灰色并调整UIView的大小你想要显示并执行在自动调整遮罩中水平拉伸

希望这会对你有所帮助。 谢谢!