問題タブ [uitableviewautomaticdimension]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
273 参照

ios - 自動ディメンションの UITableView は、セルを正しく表示しません。常にそのセル内の LAST ラベルが壊れていることがあります

単純なケース:

私のセルのいくつかは、適切な方法でランダムに表示されるかどうか:

  • これは良い方法です:

ここに画像の説明を入力

  • これは良い方法ではありません。

ここに画像の説明を入力

それは何に依存しており、それを修正する方法は?

興味深いこと:

最後に別のラベルを追加しました:

最後のラベルが正しく表示されないことがあります。しかし、私の以前のラベルは今では常に正しいです。何が起こっている?

ここに画像の説明を入力

ここに画像の説明を入力

0 投票する
5 に答える
1736 参照

ios - scrollToRowAtIndexPath は、現在のオフセットからではなく常に上からスクロールします

私のUITableView場合、メソッドを使用して最後のセルにスクロールします。

しかし、これは期待どおりに機能しません.2番目のセルにいる場合でも常にテーブルが上からスクロールされるためです。これを修正する方法は?

0 投票する
2 に答える
2452 参照

objective-c - 最初の読み込み時に一部のセルの UITableViewCell の高さが正しくありません

UITableViewAutomaticDimensionテーブルビューセルの高さを計算するために使用しています。それは私にとってはうまくいきます。ただし、一部のセルでは、高さを動的に計算するのではなく、返される高さが 44 になります。しかし、同じセルに戻ってスクロールすると、高さは完全に再計算されます。したがって、すべてのセルの高さをスクロールして手動で修正した後、制約違反の警告が表示されないため、制約に問題はないと思います。

編集

以下は画像のスクリーンショットです(トリミングするとめちゃくちゃになりますが、プロフィール画像から問題を確認できます)。最初のセルの高さは正しく計算されます。しかし、残りは欠陥があります。 ここに画像の説明を入力

0 投票する
1 に答える
597 参照

ios - UITableView: カスタム/可変セルの高さで下にスクロールすると、最初のスクロールで不正確になる

編集: https://streamable.com/rfymはそれを実際に示します。Scroll To Bottom を初めて押したとき、最後までスクロールしません。次に、手動で一番下までスクロールし、すばやく上にスクロールします。Scroll To Bottom をもう一度押すと、cachedHeights を使用しているため、正しく機能します。

だから、私はこれについて多くの答えを見てきましたが、どれも私にはうまくいかないようで、他の多くの人にもうまくいかないと確信しています:

tableView.setContentOffset(CGPointMake(0, CGFloat.max), animated: true):

ブーム、瞬時に、私のtableViewが消えます。

tableView.setContentOffset(CGPointMake(0, self.tableView.contentSize.height - self.tableView.frame.size.height), animated: true):

不正確。底までは入りません。時々、それはオーバーシュートします!

tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: self.replies.count - 1, inSection: 0), atScrollPosition: .Bottom, animated: true)

繰り返しますが、前のものと同様に、これは不正確です。

これが不正確である理由はわかっています。私が必要としているのは、これに対する解決策です...

実行するコードは次のとおりです。

一番下までの最初のスクロールだけは最後まで行かないことに注意してください。指を使って一番下までスクロールしてから一番上までスクロールし、一番下までスクロールすると完璧です。

理由は簡単です。tableView.willDisplayCellすべての単一セルでトリガーされます。これは、すべての高さが既にキャッシュされていることを意味します。これはtableView.estimatedHeightForRowAtIndexPath、最初のスクロール後に完全に機能することを意味します。

ただし、すべての高さをキャッシュするために一番下までスクロールせず、プログラムで一番下までスクロールしようとすると、そこに到達しません。なんで?私はtableView.estimatedHeightForRowAtIndexPathリターン113を持っているからです。

もっと正確な見積もりが必要だと主張する人もいるかもしれませんが、私はこの考えを楽しませることを拒否します. セルの数は、50 個から 5000 個まであります。正確な見積もりはありません

これを軽減するにはどうすればよいですか?

おそらく、すべての高さを別の時間にキャッシュする必要がありますか? それは何時ですか?自分で計算したくない。の利点は、面倒な計算を自分で行う代わりにtableView.willDisplayCellキャッシュできることです。cell.frame.size.height

編集2:私は陽気な解決策を持っています...これは非常に不格好です..そして受け入れられません...しかし、技術的には機能します。趣味で追加。

0 投票する
1 に答える
299 参照

ios - スクロール中に、ダウンロードした画像の高さに従って UITableViewAutomaticDimension でカスタム テーブル セルの高さを変更します

実行時に画像の URL を取得し、これらの画像をダウンロードしてテーブルに表示します。画像が非同期でダウンロードされています (SDWebImage を使用)。さらに重要なことは、これらすべての画像を実際のサイズで表示したいということです。初めて、テーブルが正常に読み込まれます。5 つ以上のセクション (各セクションには 1 つの行が含まれます) があり、テーブルをスクロールして reloadSections を使用してセクションを更新しようとすると、テーブルが間違ったセル イメージの高さで表示されます。誰でもこれで私を助けることができますか? 注: UITableViewAutomaticDimension を使用しています

0 投票する
1 に答える
128 参照

objective-c - UITextView を使用した UITableViewRowAnimationAutomatic が正しく表示されない

iOS 9 で、UITableViewAutomaticDimension を使用して tableView を設定し、viewDidLoad で 200.f 推定される行の高さを指定します。

画像、ボタン、またはラベルを含むセルではうまく機能しますが、textView とボタンを含むセルでは、ボタンは正しく表示されますが、tableView が更新されると textView は展開されません。

欲求が私の間違いである可能性について何か考えはありますか?

セルで高さの制約をプログラムで更新する必要がありますか?

ありがとう

0 投票する
2 に答える
2053 参照

ios - UITableViewCellでダブルタップとシングルタップを検出して2つのアクションを実行する

PFQueryTableViewControllertableView の相互作用を学習しようとしています。

私が現在持っているもの:tableViewセルはタップで高さを増やします。didSelectRowAtIndexPathまたは、基本的にセル関連のデータを次のviewControllerにシングルタップperformSegueWithIdentifierと一緒に使用できます。prepareForSegue

以下のコードで、「tableView セルの高さを増やすタップ コード」コードをコメントにすると、ダブルタップを検出できます。それ以外の場合は、コードが didSelect ブロック内にあるため、1 回のタップで高さが増加します。

必要なもの:シングルタップで、セルの高さが増減します。セルの高さが増加している間にダブルタップすると、セルデータが次のようにセグエされるはずUIViewControllerです。

そうでない場合は、シングルタップで高さを増減する必要があります。ダブルタップすると、セル データが次のセルに移動しますUIViewController

コードは次のとおりです。

それを機能させるもう1つの方法は、コードNSIndexPathの外で選択したセルを取得できる場合didSelectRowAtIndexPath、基本的にダブルタップを使用して必要なアクションを取得することです。NSIndexPathtableView のデフォルト ブロックの外に出ることができますか?