問題タブ [layoutsubviews]

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 投票する
1 に答える
1431 参照

ios - 制約と自動レイアウトの背後にある IOS アルゴリズム

自動サイズと制約を計算する IOS の layoutSubviews 関数をリバース エンジニアリングしようとしています。通常、次の順序で制約を作成する場合: A が B に依存 (制約) し、B が C に依存し、C が固定フレームで開始された場合、システムは次の順序で計算を実現するのに十分スマートである必要があります: C -> B ->不要なループを避けるため。

私の質問は次のとおりです:IOS(またはアルゴリズムは何ですか)はどのように NSLayoutContraint のリストを走査し、そのような順序でフレームを計算しますか?

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

ios - UITableView が向きの変更時にデータをリロードしないようにする

デバイスの向きが変わったときの私のuitableview呼び出しreloaddata(表示されるセルの数が変更されるため、ドキュメントから理解できる限りレイアウト サブビューで呼び出されるため、理にかなっています)、ダウンロードを実行しているため、これは私にとって問題です。一部のファイルが突然表示されないようにします。デフォルトの動作を停止して、必要なときに手動でリロードできるようにする方法はありますか?

編集:私はよりよく説明しようとします。テーブルビューの上部に、サーバーからの同期要求を開始する「同期」というボタンがあります。この同期要求はまず、テーブルビューに表示したい情報を保持する JSON オブジェクトを取得しますが、それぞれuitableviewitems は、インターネットからダウンロードしているファイルを表します。

ファイルのダウンロード中は画面にアクティビティ インジケーターが表示されますが、ファイルのダウンロードが終了したときにのみ、テーブルをリロードします。問題は、ユーザーが向きを変えると がUITableview自動的に呼び出さreloaddataれるため、ダウンロードしたファイルのダウンロードが完了する前にセルが json からの情報でいっぱいになることです。

コード:

0 投票する
9 に答える
6130 参照

ios - 最初に表示されたときに UITableViewCell の UILabel のフレームを変更できません (Autolayout を使用)

を含むプロトタイプセルが内部にUITableViewありますUILabel。ラベルのテキストのサイズに応じて、ラベル (およびセル) のサイズを動的に変更したいと考えています。

次のようにプロトタイプ セルを作成しますcellForRowAtIndexPath

次に、ProgramDetailCell次の実装があります。

セルが初めて表示されるときにlayoutSubviewsが呼び出されますが、descriptionLabelサイズは変更されません。ただし、テーブルを下にスクロールしてもう一度戻ると、「再利用」セルが表示され、ラベルのサイズが正しく変更されます。

セルが最初に表示されたときに機能しないのはなぜですか?それを修正するにはどうすればよいですか?

前もって感謝します!

0 投票する
3 に答える
318 参照

ios - 高さの異なるカスタム UITableViewCell をレイアウトする方法

画像、タイトル、説明を持つ UITableViewCell サブクラスがあります。説明の内容の長さに応じてセルの高さのサイズを変更することになっています。つまり、セルが 5 行を超える場合は、それが続くまで拡張する必要があります (+ 画像などの他のサブビュー)。

次に来るセルは、その後にのみ開始する必要があります。

固定行の高さ = 160 を持つ xib からインスタンス化された UITableViewCell サブクラスがあります。

これはかなり標準的な要件であることはわかっていますが、ガイドラインが見つかりません。

私はすでに次のようにlayoutSubViewsを拡張しました:

説明が画像よりも高い場合は、画像とセルの高さを説明に合わせてサイズ変更する必要があることがわかります。

ただし、これを実行してこのコードを呼び出すと、次のようになります。

呼び出しによりセル フレームが変更されている間layoutSubViews、他のセルはそれを尊重していないようです。つまり、前のセルのサイズが変更されていなければ、同じ位置に表示されます。

2 つの質問:

  • 私が望むものを可能にする方法は?
  • setNeedsLayout内で呼び出すことで、私は正しくやっていますcellForRowAtIndexPathか?

PS: セルの高さを変更する鍵を握っていることは知っていますが、高さを計算するためだけにheightForRowAtIndexPath行うデータ解析 (ここには示されていません) はやり過ぎだと感じています。コンテンツのニーズに応じてサイズを変更するように にcellForRowAtIndexPath直接指示できるものが必要です。UITableViewCell

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

ios - カスタムUITableViewCellでlayoutSubviewsを実装すると、セルの境界線が消えます

彼らは、写真は千の言葉に値すると言うので...layoutSubviewsカスタムで実装しUITableViewCellないと、これが得られます

ここに画像の説明を入力

layoutSubviewsカスタムで実装した後UITableViewCell、これを取得します

ここに画像の説明を入力

の実装で最初の写真を取得するにはどうすればよいlayoutSubviewsですか?