UITableView如何给每一行的cell内容放到一个新的view中,让新的view与cell有20的边距 给新的view设置背景色 和边框
时间: 2024-12-02 19:13:49 浏览: 21
在 `UITableView` 中,为了将每一行的内容放在一个新的视图 (`UIView`) 中,你可以按照以下步骤操作:
1. **自定义UITableViewCell**:
首先,你需要创建一个自定义的 `UITableViewCell` 子类,比如 `CustomTableViewCell`。在这个子类中,创建一个新的 `UIView` 并将其当作子视图。
```swift
class CustomTableViewCell: UITableViewCell {
let contentView = UIView()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupContentView()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupContentView()
}
func setupContentView() {
contentView.translatesAutoresizingMaskIntoConstraints = false
contentView.backgroundColor = .yourBackgroundColor // 设置背景色
contentView.layer.borderWidth = 1 // 设置边框宽度
contentView.layer.borderColor = UIColor.yourBorderColor.cgColor // 设置边框颜色
contentView.frame.size.width = tableView.bounds.width // 宽度等于表格视图的宽度
contentView.contentEdgeInsets = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20) // 设置内边距为20像素
addSubview(contentView)
// 使用Auto Layout添加约束
NSLayoutConstraint.activate([
contentView.topAnchor.constraint(equalTo: contentView.superview.topAnchor),
contentView.leadingAnchor.constraint(equalTo: contentView.superview.leadingAnchor),
contentView.bottomAnchor.constraint(equalTo: contentView.superview.bottomAnchor),
contentView.trailingAnchor.constraint(equalTo: contentView.superview.trailingAnchor)
])
}
}
```
2. **注册和使用**:
然后在 `UITableViewDataSource` 方法中,使用这个自定义的 cell 类型。
```swift
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "YourReuseIdentifier", for: indexPath) as! CustomTableViewCell
// 在这里添加你的内容视图,例如UILabel、UIButton等
let contentView = UIView()
// ...设置内容视图的子视图...
cell.contentView.addSubview(contentView)
return cell
}
```
这里的 `"YourReuseIdentifier"` 是你在 Storyboard 中为这个自定义 cell 设定的标识符。
阅读全文