2016-08-25 7 views
3

セルフサイジングUITableViewCellUIStackViewにして達成できません。私はこれをやっているコードでセルフサイジングUITableViewCellを内部にUIStackViewで作成するには

ui

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.tableView.estimatedRowHeight = 80 
} 

しかし、私はアプリ、UITableViewCell sのdoesnのを実行したときに、私はこのような何かをやっているUITableViewCellについては

サイズ変更:

result

UIStackViewが入ったUITableViewCellセルフサイジングを作成するにはどうすればよいですか?

+0

FWIW 'distribution'プロパティが重要です。時々あなたはそれを正しく設定しないと予期しない結果を得ることがあります。 – Honey

答えて

0

セルフサイジングセルがUITableViewCellで動作するための自動レイアウトを得るのは、各サブビューをすべての面にピン止めするための制約です。つまり、各サブビューに先頭、上端、後端および下端の制約があります。次に、各セルの高さを指示するために、サブビューの固有の高さが使用されます。

ここにはa nice tutorialがあります。

+2

ありがとうございました。私はすべてのピン(先頭、上端、後端および下端)を持っていますが、私は 'UIStackView'を使用しています。すべてのラベルを持っています。問題は 'UIStackView'の内容が自動的にサイズ変更されないことです。 – pableiros

0

スタックビュー自体を固定してみてください。 stackViewは等間隔に配置したり、均等に分配したりする責任があることを覚えておいてください。それで、それ自身とスーパービューの間の制約を使用してすべてを把握する必要があります。

ここにはapple explanationがあります。

HTH

+0

スーパービューとの間でどのような制約を設定する必要がありますか? – pableiros

+0

'UIStackView'を' UITableViewCell'に等しい幅で追加しました。 'UIStackView'はサイズ変更されますが、' UITableViewCell'はサイズ変更されません。 – pableiros

2

マルチラインラベルはありますか?その場合は、IBのlinesプロパティが0でないことを0に設定していることを確認してください。

スタックビューの上端と下端。

それはそれをしない場合は、これらの点を確認してください。

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    return UITableViewAutomaticDimension 
} 

override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    return UITableViewAutomaticDimension 
} 
+0

私は以前にピンを追加しました。私は2つのデリゲートメソッドを追加し、まだ動作しません – pableiros

関連する問題