問題タブ [uitableviewsectionheader]
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.
ios - UITableView セルで UITextView のサイズを大きくすると、セクション ヘッダーが繰り返される
私は 1 日からこの問題をいじっており、この問題を解決するために多くの方法を試しましたが、まだ成功していません。3 つのカスタム セルを含むテーブルビューがあり、最後の 2 つのセクションにセクション ヘッダーを追加しました。これがスクリーンショットです。
これは、TextView にテキストを入力すると、最後のセクション ヘッダーが繰り返されることを示しています。私の TextView は編集可能で、スクロールを無効にして、テキストサイズに従ってテキストビューのサイズを調整しました。
これがコードです。
TextView デリゲート メソッド。
この #SOソリューションを試しましたが、助けにはなりません。この方向で何か助けていただければ幸いです。前もって感謝します。
ios - セクション ヘッダーが提供されている場合、UITableview の高さは自動的に全画面表示に変更されます
上部にカスタムビュー(検索アイコン/ベル)とその下にテーブルビュー(テーブルヘッダービュー付き)があります。テーブルビューにセクションヘッダービューを提供すると、テーブルビューは制約を尊重しません.テーブルビューは画面全体の高さを自動的に取得します. セクション ヘッダー コードを削除すると、すべての制約が考慮されます。上の画像は、tableview が下に設定されていても、高さいっぱいに表示されます。カスタム トップ ビューはテーブルビューの下に隠れます。
heightForHeaderInSection、estimatedHeightForHeaderInSection、viewForHeaderInSection を実装しました。
また、self.feedTableView.contentInset = insets self.feedTableView.scrollIndicatorInsets = insets // トップ ビューの高さを設定すると、Tableview は適切に機能します。
ios - テーブルビューで動的ヘッダービューを適切に設定するには?
セクションのヘッダー ビューが a でUIImageView
あり、そのUILabel
下に a が必要です。画像ビューの高さは一度作成されると変更されませんが、ラベルのテキストはユーザー アクションの結果として変更される場合があります。ヘッダー ビュー全体の高さを動的に更新する必要があります (フレームを変更せずに AutoLayout を使用)。
この投稿など、いくつかの投稿を確認していますが、試した解決策がうまくいきません。ラベルのテキストを変更しても、ヘッダー ビューの高さが更新されません。
たぶん、最初からこれがどのように機能するかを理解する必要があります。まず、これについて明確にしたいと思います。
UIView
ヘッダー ビューをinのサブクラスtableView(_:viewForHeaderInSection:)
として提供することと、それをサブクラスとして提供しUITableViewHeaderFooterView
てテーブル ビューに登録することの違いは何ですか?ヘッダー ビューのサブビューが動的な高さを持つために必要な制約はどれですか?
ヘッダー ビューの高さを動的に更新するにはどうすればよいですか?
ios - iOS 11 UITableView の自動 sectionHeaderHeight のバグにより、アニメーションの不具合が発生し、テーブルビューの上に壊れたセクションが残る可能性があります
最新のアプリを開発しているときに、テーブルビューのセルに各セクションに収まる十分なスペースが与えられていないように見えるテーブルビューでレンダリングの問題が発生することがありました。
最近まで問題を確実に再現するのに苦労していましたが、考えられるすべてを使い果たした後、バグの基本をテストアプリに複製することに決め、最終的に同様の問題を再現することができたので、最終的にはバグの原因になります。
私のメイン アプリはカスタム セクション ヘッダー ビューを使用し、必要に応じて複数行に拡張できるテキストを含む動的コンテンツを含めるため、自動高さディメンション行とセクション ヘッダーを必要とします。メインアプリで問題をデバッグするとき、カスタムセクションヘッダービューをデフォルトのテーブルビューセクションタイトルに置き換えてみましたが、それでも問題を再現できたので、このテストアプリはセクションタイトルを自動 sectionHeaderHeights で使用していますが、これは奇妙だと気づきましたが、同じ問題はカスタム ビューで発生します。単純なタイトルを使用すると、より単純な例になります。
ここにある zip ファイルにプロジェクトのコピーをアップロードしました。
私のテストアプリのワークフローが正常に動作し、自動 sectionHeaderHeight によって壊れていることを示す 2 つのビデオも同様です。これらの動画はこちら
次の画像は、2 つのテスト セクションとその行を正しく表示するアプリの動作の違いを示しています。
そして、セクション 2 内の行の 1 つを塞いでいるフローティング「セクション 2」ヘッダーで壊れています。
これに実際に関連するコードは、プロジェクトの TableViewController 内にあります。
クラス定数 setAutomaticDimensionSectionHeaderHeight を設定して、tableView.sectionHeaderHeight を UITableViewAutomaticDimension に初期化するかどうかを設定できることがわかります。自動に設定すると、上記のビデオに示されているようなバグが発生します。
- バーボタンを使用してセクションを視覚的に切り替える場合
- 新しい「セクション 2」ヘッダーが目的の位置にすぐに表示されます
- 既存の「セクション 2」ヘッダーとその行はすべて、正しい位置にスライドします
- 非表示のセクションを切り替える場合
- (テーブル行を選択して) 次のビュー コントローラーに移動し、そのテーブルビュー セクションの切り替えボタンを使用する
- テーブルビューに戻ります
- テーブルビューがオフスクリーンである間、セクション1とその行を非表示にするようにこれを繰り返します
- セクション 1 が追加されたときの位置に、ダミーの「セクション 2」ヘッダーが浮いていることがわかります。
- このダミー ヘッダーはテーブルビューに添付され、それと共にスクロールしますが、ビューの一番上までスクロールしたときに他の実際のセクション ヘッダーを邪魔にならないようにすることはありません。
アニメーションの不具合は、このテスト アプリ内でのみ気付いたものです。私のメイン アプリでは、ナビゲーション コントローラーの子ビューで常にテーブル ビューのオフスクリーンへの変更を再現します。説明したように、フローティング ヘッダー ビューが発見されており、アプリがかなり壊れているように見え、実際にはいくつかのテーブルビュー行を非表示にすることでかなり壊れています。最初に見たとき、ヘッダーが間違っていてフローティングしていることに気づきませんでした。テーブルビューの他の問題だと思いました。
かなり壊れているように見えるので、おそらくこれについてAppleにレーダーを記録しますが、誰かが何かアイデアを持っているかどうか見てみようと思いました. 自動セクションの高さに関する一般的な問題について話し、セクションの高さのサイズを動的に計算することを推奨する人がいるのを見てきました。この時点で自動レイアウトが解決されたと信頼できる場合は、これを試すことができると思います私のsectionView内のコンポーネントビューの高さを合計すると思いますか?
それ以外に、次のような他の質問/回答シリーズを見たばかりです
おそらく、推定セクションヘッダー高さ(および推定行高さ)を0に設定しようとしているという話ですが、これはテストアプリで試したところ、問題を「修正」しているようです。後者のリンクは、初期の iOS 11 リリース ノートも引用しています。
テーブル ビューはデフォルトで推定高さを使用するようになりました。これは、セルとセクション ヘッダー/フッター ビューがデフォルトで自動サイズ調整されることも意味します。EstimatedRowHeight、estimatedSectionHeaderHeight、および EstimatedSectionFooterHeight プロパティのデフォルト値が UITableViewAutomaticDimension になりました。これは、テーブル ビューが使用する推定高さを選択することを意味します。可能であれば、各プロパティのより正確な見積もりを提供する必要があります。これは、実際の高さの平均値の最良の推測です。iOS 11 SDK を使用してアプリをビルドするときに異なる動作をする既存のテーブル ビュー コードがあり、セルフ サイズ設定を採用したくない場合は、値をゼロに設定して推定高さを無効にすることで、以前の動作を復元できます。各推定高さプロパティ。(30197915)
そのため、estimatedSectionHeaderHeight 行をすべてコメントアウトして、新しいデフォルトの iOS 11 の動作を使用しようとしました。これも問題なく機能しているようで、セルフサイジングが必要であることを知っているので、その説明により、より好ましいように聞こえます. ただし、メモには、見積もりを自分で提供する必要があると書かれていますが、それを行うとこれらのバグにつながるため、この段階ではアップルからの悪いアドバイスのようです.
メインアプリを再び通常の状態に戻し、これで問題が解決するかどうかを確認する必要があります。最初に動的な高さのセクションと行を機能させたとき、必要なスペースを埋めるために自動レイアウトと複数行のテキスト ラベルを実際に適切に機能させるには、これらの推定プロパティを何かに設定する必要があるように思われたことを覚えています (私は間違っていた可能性があります)。ただし、物事を機能させようとしてすべてのパラメーターと格闘していたので)。これを 0 に設定するのは間違っているように思われますが、これらのセクションの推定サイズが通常どのくらいになるかを把握できる場合は、空白のままにしてデフォルトの自己サイジングを採用するのが正しいようですが、以前の iOS でリリースした場合はおそらくうまく機能しないので、コードを微調整する必要があるかもしれません。
これに関するこれ以上のアイデアは本当にありがたいです!
乾杯!
編集
さらにテストすると、高さと推定高さを0に設定して物事を修正することに楽観的すぎたようです。メインアプリのユースケースに適合しない動的な高さセクションヘッダーを持たないことによってのみ問題を解決できます
さまざまなオプションのすべての組み合わせを調べてテストし、次の結果を得ました
sectionHeaderHeight の観点から、別の EstimationHeaderHeights を使用
- tableView.sectionHeaderHeight = 0
- 推定高さ == 0、45、または自動寸法のヘッダーはありません
- tableView.sectionHeaderHeight = 60
- ヘッダーはすべて一定の高さ 60 で、UI バグはありません
- tableView.sectionHeaderHeight = UITableViewAutomaticDimension
- ヘッダーなし、または推定ヘッダー高さが 0 の場合は viewForHeaderCalled
- ヘッダーの推定高さが数値または自動寸法に設定されている場合、バグのあるヘッダー
異なる sectionHeaderHeights を持つ推定 sectionHeaderHeight パースペクティブから
- tableView.estimatedSectionHeaderHeight = 0
- sectionHeaderHeight が 0 に設定されたヘッダーがないか、viewForHeader が呼び出されない自動ディメンション。
- ヘッダー headerHeight=60 のバグはありません
- tableView.estimatedSectionHeaderHeight = 45
- sectionHeaderHeight == 0 のヘッダーはありません
- sectionHeaderHeight=60 のバグなしでヘッダーを 60 に固定
- sectionHeaderHeight==Automatic Dimension のバグによるヘッダーの自動サイズ変更
- tableView.estimatedSectionHeaderHeight = UITableViewAutomaticDimension
- sectionHeaderHeight==0 の場合、バグのあるヘッダー、自動寸法
- sectionHeaderHeight=60 のバグなしでヘッダーを 60 に修正
基本的に、この問題を修正する組み合わせはありませんが、動的な高さのセクション ヘッダーを持つ機能は保持されます