問題タブ [viewdidlayoutsubviews]

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 に答える
18736 参照

ios - UIViewController viewDidLayoutSubviews

Erica Sadun がクックブックの例 Ch07-11 で次のことを行う理由 (viewDidLayoutSubviews で viewDidAppear を呼び出す) を理解するのに苦労しています。おそらく、2 つのメソッドは代わりに別のメソッドを呼び出す必要がありますか?

参照: https://github.com/erica/iOS-5-Cookbook/tree/master/C07

理由はありますか?

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

ios - viewDidLayoutSubviews で正しいビューの高さを取得するにはどうすればよいですか?

上記でview.heightは、デバイスの向きに関係なく、常に1024 です。デバイスを回転させviewDidLayoutSubviewsても呼び出され、1024 が出力されます。

それでも、ビューはうまくレンダリングされます。私は一体何が欠けているのですか?

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

ios - UIView/CALayer: Transform はスーパービューで layoutSubviews をトリガーします

UIView のいくつかのプロパティを変更すると、スーパービューlayoutSubviewsでトリガーされます。ドキュメントでこれに関する声明を見つけることができません。

これらのプロパティは、スーパービューとセルフでレイアウトをトリガーします

  • フレーム
  • 境界

これらのプロパティは、スーパービューでのみレイアウトをトリガーします

  • 変身
  • レイヤー変換

これらのプロパティは、自分自身でのみレイアウトをトリガーします

  • なし

これらのプロパティはレイアウトをトリガーしません

  • 中心
  • layer.anchorPoint
  • レイヤーの位置
  • アルファ

transform がレイアウトをトリガーし、その位置と anchorPoint がそうでないことは非常に混乱しています。

コード例: https://github.com/hfossli/LayoutSubviewsInconsistency


私は知りたいです:

  • なぜこの動作が見られるのか
  • これが本当に矛盾している場合、またはいくつかのコアコンセプトを誤解している場合
  • トランスフォームを変更するたびにスーパービューをレイアウトサブビューにしないようにする方法

これについては、ドキュメントにもヘッダー ファイルにも何も見つかりません。UIDynamics などを使用する場合、この問題は重大です。

0 投票する
0 に答える
462 参照

ios - Xcode 6 ベータ版とサイズ変更可能な Iphone: 現在の画面サイズを取得する方法

ビューが任意の画面サイズに収まるように、ビューを完全に動的にしようとしています。現時点では、次のような計算のために画面の幅と高さを取得します。

問題は、「サイズ変更可能な Iphone」エミュレーターが常に 768 の幅と 1024 の高さを与えることです (iPad のように)。エミュレーターの下部にある幅と高さの値をいつ変更しても問題ありません...より良いテストのために使用できる新しい関数はありますか?

編集:

これを正確に処理する方法がまだわかりません...現時点では、「viewDidLayoutSubviews」でサブビューのサイズを計算します。これは、「サイズ変更可能な Iphone Simulator」の正しい幅と高さを示す唯一のメソッドだからです。問題は、このメソッド内のすべてのものを計算すると、UI をスクロールまたはタッチするたびに呼び出されるため、何百回も呼び出される可能性があることです...そしてビューを計算しようとすると「ViewDidAppear」は遅すぎて、再計算後はすべてが本当に奇妙に見えます....

0 投票する
0 に答える
463 参照

objective-c - viewdidload、viewdidappear でフレーム サイズが正しくない

iOS8を使用。と で、ビューのフレーム サイズUIViewController'sが正しくありませviewDidLoadviewDidAppear。から正しいフレームサイズを取得してviewDidLayoutSubviewsビューの更新を実行できましたが(レイアウトを無効にする必要があります)、回転を処理するよりもviewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator無意味になり、2つの方法がそれを解決します。

レイアウトを無効にして無意味な計算やレイアウトなどを実行する必要があるかどうかわからないため、理想的willTransitionToSizeには と ではなく と呼ばれます。didLayoutSubviews

回転やフレーム サイズの変更に関連するあらゆる種類のマジック フラグの使用を避けたいと考えています。

これが発生する前に、View Controllerビューの「真の」サイズを取得する方法はありますか?

編集

コード例を次に示します。

0 投票する
0 に答える
100 参照

ios - レイアウトを尊重しないUICollectionView

セル サイズを変更するために、回転後にコレクション ビューのレイアウトを変更したいと考えています。シミュレーターではうまく機能します。iPhone 6ではそうではありません。

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