我正在使用UITableView
来显示我的数据。我有两种类型的第一行UIImageView
而另一种没有UIImageView
。如果UIImageView
中有图像,则行的高度应为207或UIImageView
为零,行的高度应为64。
我的编码:
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return msgs.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! collCell
let msg = msgs[indexPath.row]
var decodeImgURL = ""
cell.lbl1.text = msg.content
decodeImgURL = msg.imgurl
if decodeImgURL == "none" {
cell.img.isHidden = true
} else {
let dataDecoded : Data = Data(base64Encoded:decodeImgURL,options: .ignoreUnknownCharacters)!
let decodedImage = UIImage(data: dataDecoded)
cell.img.image = decodedImage
}
return cell
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
let cell = tableView.cellForRow(at: indexPath) as! collCell
if cell.img.image != nil {
return 207
} else {
return 64
}
}
我在let cell = tableView.cellForRow(at: indexPath) as! collCell
答案 0 :(得分:1)
使用与heightForRowAt
中使用的cellForRowAt
相同的数据:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
let msg = msgs[indexPath.row]
if msg.imgurl == "none" {
print("row \(indexPath.row) does NOT have an image")
return 64
} else {
print("row \(indexPath.row) DOES have an image")
return 207
}
}
或者,您可以使用自动布局和约束来自动调整行的高度...但这是另一个主题。