2017-03-16 10 views
0

私はイメージビューとラベルを持つテーブルビューセルを持っています。 イメージは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 

私はコンテンツのハグや圧縮抵抗の優先順位を変更していません。 enter image description here enter image description here

はここで何が起こっている:

ここでは2枚の画像をロードしている間の高さの制約が300に設定されている画像や、一度完成したロードがありますか?画像ビューの高さに応じてセルのサイズが変更されないのはなぜですか?

答えて

1

ImageViewのアトリビュートインスペクタでは、Clip To Boundsを選択する必要があります。次に、あなたの問題の一部を解決します。次に、制約を正しく設定する必要があります。

+0

児童犯罪。ありがとう! – grabury

関連する問題