如何以编程方式在 TableCell 中添加图像和添加约束?
how to add Images and add constraints in TableCell programmatically?
我想实现下图的效果。 我想在我的单元格中添加图片(已被我用红线框起来),如何实现?
我尝试用equalToSuperView().inset(10)
做一些布局,但我不知道如何设置单元格和图像之间的关系。:
- 我创建了一个遵循协议
UITableViewCell
的 WechatMomentListCell
class WechatMomentListCell: UITableViewCell{
var content = UILabel()
var senderAvatar = UIImageView()
var senderNick = UILabel()
var Images = [UIImageView()]
var comments = [UILabel()]
}
- 我尝试在我的
ViewController
中实现func tableView()
这样的,这里是布局头像的部分。
tweetCell.senderAvatar.sd_setImage(with: URL(string: tweet?.sender?.avatar ?? ""), placeholderImage: UIImage(named: "placeholder.png"))
//tweetCell.senderAvatar.frame = CGRect(x:0, y:0, width: 40, height: 40)
tweetCell.senderAvatar.snp.makeConstraints{(make) in
make.leading.equalToSuperview().offset(50)
make.bottom.equalToSuperview().offset(20)
make.width.equalTo(40)
make.height.equalTo(40)
}
- 这里是覆盖的全部代码
tableView
:
let tweet = viewModel.tweetList?[indexPath.row]
for i in tweet?.images ?? [] {
let flagImage = UIImageView()
flagImage.sd_setImage(with: URL(string: i.url))
tweetCell.Images.append(flagImage)
}
for i in tweet?.comments ?? [] {
let flagComment = UILabel()
flagComment.text = "\(i.sender) : \(i.content)"
tweetCell.comments.append(flagComment)
}
tweetCell.senderNick.text = tweet?.sender?.nick
tweetCell.senderAvatar.sd_setImage(with: URL(string: tweet?.sender?.avatar ?? ""), placeholderImage: UIImage(named: "placeholder.png"))
//this part use for layouting avatar
tweetCell.senderAvatar.frame = CGRect(x:0, y:0, width: 40, height: 40)
tweetCell.senderAvatar.snp.makeConstraints{(make) in
make.leading.equalToSuperview().offset(50)
make.bottom.equalToSuperview().offset(20)
make.width.equalTo(40)
make.height.equalTo(40)
}
return tweetCell
在我自己的演示中,table 列表单元格显示为空白。
1中的所有代码都是你的单元格的全部代码吗?
如果该单元格为空,我会首先检查您是否已将单元格正确注册到您的 tableView 以及 cellForRow
委托函数是否实际上 returns 正确的单元格。
假设 1. 中的内容是您单元格的完整代码:
你的单元格应该处理更多它自己的设置。它应该自行布局,自行下载图像并设置其约束(如您在问题中提到的那样,以编程方式)。用您提供的代码片段来更正您的代码是不可能的。 This 可能是适合您的教程。
我想实现下图的效果。 我想在我的单元格中添加图片(已被我用红线框起来),如何实现?
我尝试用equalToSuperView().inset(10)
做一些布局,但我不知道如何设置单元格和图像之间的关系。:
- 我创建了一个遵循协议
UITableViewCell
的
WechatMomentListCell
class WechatMomentListCell: UITableViewCell{
var content = UILabel()
var senderAvatar = UIImageView()
var senderNick = UILabel()
var Images = [UIImageView()]
var comments = [UILabel()]
}
- 我尝试在我的
ViewController
中实现functableView()
这样的,这里是布局头像的部分。
tweetCell.senderAvatar.sd_setImage(with: URL(string: tweet?.sender?.avatar ?? ""), placeholderImage: UIImage(named: "placeholder.png"))
//tweetCell.senderAvatar.frame = CGRect(x:0, y:0, width: 40, height: 40)
tweetCell.senderAvatar.snp.makeConstraints{(make) in
make.leading.equalToSuperview().offset(50)
make.bottom.equalToSuperview().offset(20)
make.width.equalTo(40)
make.height.equalTo(40)
}
- 这里是覆盖的全部代码
tableView
:
let tweet = viewModel.tweetList?[indexPath.row]
for i in tweet?.images ?? [] {
let flagImage = UIImageView()
flagImage.sd_setImage(with: URL(string: i.url))
tweetCell.Images.append(flagImage)
}
for i in tweet?.comments ?? [] {
let flagComment = UILabel()
flagComment.text = "\(i.sender) : \(i.content)"
tweetCell.comments.append(flagComment)
}
tweetCell.senderNick.text = tweet?.sender?.nick
tweetCell.senderAvatar.sd_setImage(with: URL(string: tweet?.sender?.avatar ?? ""), placeholderImage: UIImage(named: "placeholder.png"))
//this part use for layouting avatar
tweetCell.senderAvatar.frame = CGRect(x:0, y:0, width: 40, height: 40)
tweetCell.senderAvatar.snp.makeConstraints{(make) in
make.leading.equalToSuperview().offset(50)
make.bottom.equalToSuperview().offset(20)
make.width.equalTo(40)
make.height.equalTo(40)
}
return tweetCell
在我自己的演示中,table 列表单元格显示为空白。
1中的所有代码都是你的单元格的全部代码吗?
如果该单元格为空,我会首先检查您是否已将单元格正确注册到您的 tableView 以及 cellForRow
委托函数是否实际上 returns 正确的单元格。
假设 1. 中的内容是您单元格的完整代码: 你的单元格应该处理更多它自己的设置。它应该自行布局,自行下载图像并设置其约束(如您在问题中提到的那样,以编程方式)。用您提供的代码片段来更正您的代码是不可能的。 This 可能是适合您的教程。