我想用这样的水平空间创建UITableView
:
所以我找到了解决方案here
但它似乎不起作用' setFrame'不能使用iOS9,所以我找到了另一个使用layoutSubviews
override func layoutSubviews() {
super.layoutSubviews()
self.contentView.frame = UIEdgeInsetsInsetRect(self.bounds, UIEdgeInsetsMake(0, 10, 0, 10))
}
但它也不起作用我得到的是:
那么如何添加正确的水平空间,我使用Swift 2
,Xcode7
,Storyboard
使用自定义UITableViewCell
答案 0 :(得分:11)
好的,所以这是制作自定义单元格的一种方法。
您可以将TableView上的背景颜色设置为灰色。
然后在您的自定义原型UITableViewCell
中我认为这应该符合你的目的,让我知道它是怎么回事:)
答案 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:打开为>源代码
第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的大小你想要显示并执行在自动调整遮罩中水平拉伸。
希望这会对你有所帮助。 谢谢!