0

メソッドsystemLayoutSizeFittingSize:UILayoutFittingCompressedSizeを使用して自動高さ計算を使用してUITableViewCellを作成するだけでした。私の見解がUILabelsとUIImageViewsを持つまでは、すべてがうまくいった。ラベルの1つをUIButtonに置き換える必要があるとき、このメソッドはサイズを正しく計算しませんでした。AutoLayoutのsystemLayoutSizeFittingSizeはUILabelsでのみ動作しますか?

UILabels以外のUIElementsにいくつかの情報を追加する必要がありますか?

最終的には、TapGesturesをUILabelsに追加して機能させる必要がありました。ここで

がセル図である:

enter image description here

時間「午前9時00分AM」と場所がここにあるラベル方法が適切に結果を与えた場合、これらは、ボタンだったかもしれません。

アイデアはシンプルで、できるだけ小さな画面サイズ(iPhone 3.5インチ)のセルxibを作成します。クラスにxibインスタンスを個別に作成し、そのインスタンス(時間、場所など)に情報を提供し、systemLayoutSizeFittingSize:UILayoutFittingCompressedSizeメソッドを実行してサイズを計算します。

_scheduleCell = [[[UINib nibWithNibName:@"HomeScheduleViewCell" bundle:nil] instantiateWithOwner:nil options:nil] objectAtIndex:0]; 

CGSize fullSize = [_scheduleCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]; 

答えて

0

autolayoutを使用している場合は、UITableViewAutomaticDimensionを使用してください。コンテンツごとに行の高さを自動的に数えます。自動レイアウトが必要で、制約を適切に設定する必要があります。セルの高さを定義するにはApple documentation状態、

として

、あなたはコンテンツビューの上端と下端との間の領域を埋めるために、制約および(定義された高さと)意見の切れ目のないチェーンを必要とします。ビューに本質的なコンテンツの高さがある場合、システムはこれらの値を使用します。そうでない場合は、ビューまたはコンテンツビュー自体に適切な高さの制約を追加する必要があります。

あなたは、ボタンの代わりに、ラベルまたは任意のオブジェクトを使用することができ、これにより同様

tableView.estimatedRowHeight = 85.0 
tableView.rowHeight = UITableViewAutomaticDimension 

を使用することができます。

主なものは自動レイアウトを管理しています。それは、最初のオブジェクトがセルのコンテンツビューで最後に最低限の制約を持たなければならないトップ制約を持たなければならないことを意味する拘束の連続したチェーンでなければなりません。

これが役に立ちます。

+0

ありがとうございました。しかし、 'systemLayoutSizeFittingSize:UILayoutFittingCompressedSize'にはUIButtonとUILabelsだけが含まれていると書かれています。なぜなら、コード/時間の量は両方のアプローチで同じであるからです。破損していない連鎖は、両者で同じです。 – Nil

+0

いいえ、 'systemLayoutSizeFittingSize:UILayoutFittingCompressedSize'のような文書にはUIButtonは含まれていません!!あなたは制約を与えるときにいくつかの間違いをしなければならないと思う – Lion

関連する問題