0

メソッドを使用して自動高さ計算で UITableViewCell を作成する必要がありましたsystemLayoutSizeFittingSize:UILayoutFittingCompressedSize。私のビューが UILabels と UIImageViews を持つまでは、すべてがうまく機能していました。ラベルの 1 つを UIButton に置き換える必要があるとき、メソッドはサイズを正しく計算しませんでした。

適切に動作させるために、UILabels 以外の UIElements に追加情報を提供する必要がありますか?

最後に、TapGestures を UILabels に追加して機能させる必要がありました。

セルビューは次のとおりです。

ここに画像の説明を入力

時間「09: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];
4

1 に答える 1

1

autolayout を使用している場合は、 を使用する必要がありますUITableViewAutomaticDimension。コンテンツごとに行の高さを自動的にカウントしますが、autolayoot を必要とし、適切に制約を設定する必要があります。

Apple のドキュメントに記載されているように、

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

次のように使用できます。

tableView.estimatedRowHeight = 85.0
tableView.rowHeight = UITableViewAutomaticDimension

これにより、ラベルやオブジェクトの代わりにボタンを使用できます。

主なものは自動レイアウトの管理です。つまり、最初のオブジェクトには上部の制約が必要で、最後にはセルのコンテンツ ビューで下部の制約が必要です。

これが役立つことを願っています:)

于 2016-05-30T07:43:59.950 に答える