Cell简介和UITableViewCell的contentView

UITableView 的每一行都是一个 UITableViewCell ,通过 dataSource tableView : cellForRowAtIndexPath : 方法来初始化每 一行
UITableViewCell 内部有个默认 的子视图 : contentView contentView UITableViewCell 所显示内容的父视图 ,可显示一些 辅助指示视图
辅助指示视图 的作用是显示一个表示动作的图标,可以通过设置 UITableViewCell accessoryType 来显示,默认是 UITableViewCellAccessoryNone( 不显示辅助指示视图 ) ,其他值如下 :
u UITableViewCellAccessoryDisclosureIndicator
u
u UITableViewCellAccessoryDetailDisclosureButton
u
u UITableViewCellAccessoryCheckmark
u
还可以通过 cell accessoryView 属性来自定义辅助指示视图(比如往右边放一个开关)



contentView 下默认有 3 个子视图
Ø 其中 2 个是 UILabel( 通过 UITableViewCell textLabel detailTextLabel 属性访问 )
Ø 3 个是 UIImageView( 通过 UITableViewCell imageView 属性访问 )
UITableViewCell 还有一个 UITableViewCellStyle 属性,用于决定使用 contentView 的哪些子视图,以及这些子视图在 contentView 中的位置

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以按照以下代码来进行布局: ```swift import SnapKit class YourTableViewCell: UITableViewCell { private let label = UILabel() private let imageView = UIImageView() override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) // Add subviews to contentView contentView.addSubview(label) contentView.addSubview(imageView) // Set label properties label.numberOfLines = 0 // Set constraints for label label.snp.makeConstraints { make in make.top.equalToSuperview().offset(5) make.left.right.equalToSuperview() } // Set constraints for imageView imageView.snp.makeConstraints { make in make.top.equalTo(label.snp.bottom).offset(10) make.left.right.equalToSuperview() make.bottom.equalToSuperview().offset(-10) make.height.equalTo(0) } } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } func configure(with text: String, image: UIImage?) { label.text = text // Update constraints for imageView based on the presence of an image if let image = image { imageView.image = image imageView.snp.updateConstraints { make in make.height.equalTo(50) make.top.equalTo(label.snp.bottom).offset(10) make.bottom.equalToSuperview().offset(-10) } } else { imageView.image = nil imageView.snp.updateConstraints { make in make.height.equalTo(0) make.top.equalTo(label.snp.bottom).offset(0) make.bottom.equalToSuperview().offset(-10) } } } } ``` 在上述代码中,我们使用了 `snp` 的链式语法来设置布局。我们首先初始化了一个 `UILabel` 和一个 `UIImageView` 并将它们添加到 `contentView` 上。然后,我们设置了 `UILabel` 的一些属性,如 `numberOfLines` 来使其多行显示。接着,我们设置了 `UILabel` 和 `UIImageView` 的约束。在 `configure(with:image:)` 方法中,我们根据传递进来的 `image` 参数来更新 `UIImageView` 的约束。如果 `image` 不为 `nil`,则我们将 `UIImageView` 的高度设置为 50,并将其放置在 `UILabel` 的下方。如果 `image` 为 `nil`,则我们将 `UIImageView` 的高度设置为 0,使其不可见,并将其放置在 `UILabel` 的正下方。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值