我有一個表視圖,其中的表視圖單元格是由用戶在應用程式上發布的帖子填充的。
我遇到的問題是根據帖子是否包含圖片來設定單元格的高度。例如,如果帖子包含圖片,我希望單元格的高度=400,但如果它只包含文本,我希望單元格的高度=150。
目前,我使用這段代碼將高度固定在400,但我不知道如何進行上述修改。
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
//自動單元格高度。
return 400
}
post模型看起來是這樣的......
class Posts {
var id: String[/span]。
var author: String
var text: String
var createdAt: Date
var degree: String
var university: String
var uid。String
var photoURL: String
var url: URL
varpostID: String
var likes: Int Int
init(id:String, author:String, text: String, timestamp:Double, Degree: String, university: String, uid: String, photoURL:String, url: URL, postID:String, likes:Int) {
self.id = id
self.author = author
self.text = text
self.createdAt = Date(timeIntervalSince1970: timestamp/ 1000)
self.degree = degree
self.university = university
self.uid = uid
self.photoURL = photoURL
self.url = url
self.postID = postID
self.like = likes
}
}
uj5u.com熱心網友回復:
一個相當簡單的方法是創建一個自定義視圖單元,并在需要時隱藏imageView。
將行高設為 "#",并將其設為 "#"。
將行高設定為自動,這樣tableView就知道將高度設定為你需要的任何高度。

然后,你可以在這個自定義單元格上添加你的文本和imageView。我之前得到的作業方式是將這兩個元素添加到一個堆疊視圖中,并對其設定約束。
確保你已經為stackView里面的標簽和imageView的高度以及stackView到superView的底部和頂部的距離設定了約束。這可以讓自動布局知道該單元格的高度
。現在,任何時候你隱藏imageView(當你沒有影像要顯示時),單元格都應該自動調整到更小。
uj5u.com熱心網友回復:
我最后在tableview cellforrowat index path函式中加入了這段代碼,以便讓圖片正確呈現。
let imageIndex = posts[indexPath.row].mediaURL
let url = NSURL(string: imageIndex)! as URL
if let imageData: NSData = NSData(contentsOf: url) {
let image = UIImage(data: imageData as Data)
let newWidth = cell.MediaPhoto.frame.width
let scale= newWidth/image!
let newHeight = image! .size.height * scale
UIGraphicsBeginImageContext(CGSize(width: newWidth, height: newHeight))
影像!.draw(in: CGRect(x: 0, y: 0, width: newWidth, height: newHeight)
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
cell.MediaPhoto.image = newImage
cell.MediaPhoto.contentMode = .scaleToFill
cell.MediaPhoto.clipsToBounds = true
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/311727.html
標籤:


