设置 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 2
、Xcode7
、Storyboard
和自定义 UITableViewCell
我认为您不应该尝试更新 contentView 的框架。您应该在 contentView 下添加一个视图(作为父视图),然后将所有约束应用于该 UIView。
好的,下面是制作自定义单元格的一种方法。
您可以将 TableView 的背景颜色设置为灰色。
然后在你的自定义原型 UITableViewCell
- 将背景颜色设置为透明。
- 将 UIView 拖到它上面并将其颜色更改为白色或您喜欢的任何颜色。
- 将视图到单元格的左、右、上、下约束设置为至少 5。
- 确保使用委托方法设置自动高度,然后估计高度,如果您的单元格将具有动态高度。
- 同时删除 table 视图中的分隔符,这样就没有行了。
- 在视图中,您可以放置标签以添加文本。
我认为这应该符合您的目的,让我知道进展如何:)
请不要尝试更改 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 的大小,然后 在自动调整掩码中水平拉伸。
希望这对您有所帮助。
谢谢!
我想创建水平 space 的 UITableView
,如下所示:
所以我找到了解决方案here
但它似乎不起作用函数 'setFrame' 不适用于 iOS9,所以我找到了另一个使用 layoutSubviews
override func layoutSubviews() {
super.layoutSubviews()
self.contentView.frame = UIEdgeInsetsInsetRect(self.bounds, UIEdgeInsetsMake(0, 10, 0, 10))
}
但它也不起作用我得到的是:
那么如何正确添加水平 space,我正在使用 Swift 2
、Xcode7
、Storyboard
和自定义 UITableViewCell
我认为您不应该尝试更新 contentView 的框架。您应该在 contentView 下添加一个视图(作为父视图),然后将所有约束应用于该 UIView。
好的,下面是制作自定义单元格的一种方法。
您可以将 TableView 的背景颜色设置为灰色。
然后在你的自定义原型 UITableViewCell
- 将背景颜色设置为透明。
- 将 UIView 拖到它上面并将其颜色更改为白色或您喜欢的任何颜色。
- 将视图到单元格的左、右、上、下约束设置为至少 5。
- 确保使用委托方法设置自动高度,然后估计高度,如果您的单元格将具有动态高度。
- 同时删除 table 视图中的分隔符,这样就没有行了。
- 在视图中,您可以放置标签以添加文本。
我认为这应该符合您的目的,让我知道进展如何:)
请不要尝试更改 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 的大小,然后 在自动调整掩码中水平拉伸。
希望这对您有所帮助。 谢谢!