2017-03-02 4 views
1

私はtableviewセルの中でstackviewを使用しようとしています。私のスタックビューには、水平に並べられた2つのラベルがあります。コンパクトな幅のラベルを垂直に整列させるために、IBにサイズクラスオーバーライドを追加しました。uitableviewcellのuistackviewsの使用

ラベルのアライメントが期待通りに変更を行いますが、私は後ろに細胞をスクロールしてまで、細胞の高さが正しくありません

私のテーブルビューには、使用してセルの高さを計算するために指定します。

// Automatic row height calculation 
    tableView.rowHeight = UITableViewAutomaticDimension 
    tableView.estimatedRowHeight = 68.0 // set to whatever your "average" cell height is 

iPhone SEでは、ラベルを横に並べて表示しますが、もう一方は縦に並べて表示します。ポートレートモードでアプリを起動すると、ラベルは期待どおりになりますが、私が横に回転すると、横に並んで移動しますが、セルの縦の高さはまだ変わりません。セルを画面からスクロールすると、セルの高さが修正されます。

私には何が欠けていますか?

助けてください。

ありがとうございました。

+0

私は、テーブルビューのセルでサイズクラスのスタックビューを使用しようとしています。私はXcode 8の "特性を変える"と同じ効果を達成することができます。これは、基本的には、サイズクラスに基づいてUI要素に制約をインストールしてアンインストールすることを意味します。 stackviewはこれをもっと簡単にしてくれました。具体的には、いくつかの制約をインストールしてアンインストールするのではなく、配置プロパティを変更するだけで、ラベルを水平方向から垂直方向に並べ替えることができます。 Stackviewsは採用しやすいので、いくつかの新しい情報があれば再考します。 – Phantom59

答えて

1

OK。スタックビートが正当なバグかもしれないように見えますが、stackviewsが非常に簡単に機能するので、引き続きいくつかの掘り下げを行います。最後に、https://www.raywenderlich.comで答えを得ました。

override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { 
    DispatchQueue.main.async { 
    self.tableView.beginUpdates() 
    self.tableView.endUpdates() 
    } 
} 

Yeap!、メインキュー内で非同期にラッピング開始/終了更新呼び出しを行うと、セルの高さが正しく計算されます。 traitCollectionDidChange()はすでにメインキューで実行されているので、決して考えなかったでしょう。

詳細はUsing uistackviews in uitableviewcellを参照してください。

ありがとう、ジェリー!

関連する問題