swift中 UITableViewCell里面有一个UILabel,其距离父视图left为0,top为10,bottom为-10, 其高度是根据文字多行显示得到高度。但是出现一个UIImageView。其大小为宽100,高为64,其距离父视图right为0,中心点centerY等于父视图centerY。如果外界没有传参数image进来,那UILabel其距离父视图right为0,去掉或者隐藏UIImageView,如果外界有image传进来,那UILabel距离UIImageView的left为10。这个用SnapKit,最简洁的方式怎么写?
时间: 2024-03-11 21:50:25 浏览: 15
您可以按照以下方式使用SnapKit来实现这个布局:
```swift
// 在UITableViewCell的初始化方法中添加以下代码
// 假设UILabel的变量名为contentLabel,UIImageView的变量名为iconImageView
// 先布局contentLabel
contentLabel.snp.makeConstraints { make in
make.left.equalToSuperview()
make.top.equalToSuperview().offset(10)
make.bottom.equalToSuperview().offset(-10)
}
if let image = image { // 如果有传入图片
// 布局iconImageView
iconImageView.image = image // 设置图片
iconImageView.isHidden = false // 显示iconImageView
iconImageView.snp.makeConstraints { make in
make.width.equalTo(100)
make.height.equalTo(64)
make.right.equalToSuperview()
make.centerY.equalToSuperview()
}
// 更新contentLabel的约束
contentLabel.snp.updateConstraints { make in
make.right.equalTo(iconImageView.snp.left).offset(-10)
}
} else { // 如果没有传入图片
// 隐藏iconImageView
iconImageView.isHidden = true
// 更新contentLabel的约束
contentLabel.snp.updateConstraints { make in
make.right.equalToSuperview()
}
}
```
其中,`image`是外界传入的图片。如果传入了图片,则需要显示`iconImageView`并更新`contentLabel`的约束;如果没有传入图片,则需要隐藏`iconImageView`并更新`contentLabel`的约束。