私はイメージビューとラベルを持つテーブルビューセルを持っています。 イメージはURLからダウンロードされます。彼らは後で高さの制約を決定する、風景または肖像画にすることができます。 ラベルは複数の行にでき、linesプロパティは0に設定され、imageviewは属性インスペクタでAspect fillに設定されます。ダウンロードしたイメージと複数行ラベルを使用してテーブルビューセルを自動サイズ変更する
画像とラベルに合わせて縦方向にセルのサイズを変更したいと考えています。
cellForRowでは、imageviewの高さの制約を100などの小さな値に設定すると、画像ビューにラベルが表示されます。私が300に設定すると、部分的にラベルを覆います。私が10000のような本当に高いものに設定した場合、画像が伸びますが、ラベルはまったくカバーされません。
class ArtistListViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 250
}
}
extension ArtistListViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! ArtistTableViewCell
cell.imageHeightConstraint.constant = 100
let artist = artists[indexPath.row]
cell.descriptionLabel.text = artist.description
setupCellForImage(cell, artist: artist)
return cell
}
fileprivate func setupCellForImage(_ cell: ArtistTableViewCell, artist: Artist) {
let url = URL(string: artist.image)
URLSession.shared.dataTask(with: url!, completionHandler: { (data, response, error) in
DispatchQueue.main.async(execute: {
cell.artistImageView.image = UIImage(data: data!)
})
}).resume()
}
}
ImageViewの制約:
Top space to superview = 0
Bottom space to description label = 20
Height = 235
ラベルの制約:ここ
がコードである
Bottom space to superview = 8
私はコンテンツのハグや圧縮抵抗の優先順位を変更していません。
はここで何が起こっている:
ここでは2枚の画像をロードしている間の高さの制約が300に設定されている画像や、一度完成したロードがありますか?画像ビューの高さに応じてセルのサイズが変更されないのはなぜですか?
児童犯罪。ありがとう! – grabury