問題タブ [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.
ios - UIViewController viewDidLayoutSubviews
Erica Sadun がクックブックの例 Ch07-11 で次のことを行う理由 (viewDidLayoutSubviews で viewDidAppear を呼び出す) を理解するのに苦労しています。おそらく、2 つのメソッドは代わりに別のメソッドを呼び出す必要がありますか?
参照: https://github.com/erica/iOS-5-Cookbook/tree/master/C07
理由はありますか?
ios - viewDidLayoutSubviews で正しいビューの高さを取得するにはどうすればよいですか?
上記でview.height
は、デバイスの向きに関係なく、常に1024 です。デバイスを回転させviewDidLayoutSubviews
ても呼び出され、1024 が出力されます。
それでも、ビューはうまくレンダリングされます。私は一体何が欠けているのですか?
ios - UIView/CALayer: Transform はスーパービューで layoutSubviews をトリガーします
UIView のいくつかのプロパティを変更すると、スーパービューlayoutSubviews
でトリガーされます。ドキュメントでこれに関する声明を見つけることができません。
これらのプロパティは、スーパービューとセルフでレイアウトをトリガーします
- フレーム
- 境界
これらのプロパティは、スーパービューでのみレイアウトをトリガーします
- 変身
- レイヤー変換
これらのプロパティは、自分自身でのみレイアウトをトリガーします
- なし
これらのプロパティはレイアウトをトリガーしません
- 中心
- layer.anchorPoint
- レイヤーの位置
- アルファ
transform がレイアウトをトリガーし、その位置と anchorPoint がそうでないことは非常に混乱しています。
コード例: https://github.com/hfossli/LayoutSubviewsInconsistency
私は知りたいです:
- なぜこの動作が見られるのか
- これが本当に矛盾している場合、またはいくつかのコアコンセプトを誤解している場合
- トランスフォームを変更するたびにスーパービューをレイアウトサブビューにしないようにする方法
これについては、ドキュメントにもヘッダー ファイルにも何も見つかりません。UIDynamics などを使用する場合、この問題は重大です。
ios - Xcode 6 ベータ版とサイズ変更可能な Iphone: 現在の画面サイズを取得する方法
ビューが任意の画面サイズに収まるように、ビューを完全に動的にしようとしています。現時点では、次のような計算のために画面の幅と高さを取得します。
問題は、「サイズ変更可能な Iphone」エミュレーターが常に 768 の幅と 1024 の高さを与えることです (iPad のように)。エミュレーターの下部にある幅と高さの値をいつ変更しても問題ありません...より良いテストのために使用できる新しい関数はありますか?
編集:
これを正確に処理する方法がまだわかりません...現時点では、「viewDidLayoutSubviews」でサブビューのサイズを計算します。これは、「サイズ変更可能な Iphone Simulator」の正しい幅と高さを示す唯一のメソッドだからです。問題は、このメソッド内のすべてのものを計算すると、UI をスクロールまたはタッチするたびに呼び出されるため、何百回も呼び出される可能性があることです...そしてビューを計算しようとすると「ViewDidAppear」は遅すぎて、再計算後はすべてが本当に奇妙に見えます....
objective-c - viewdidload、viewdidappear でフレーム サイズが正しくない
iOS8を使用。と で、ビューのフレーム サイズUIViewController's
が正しくありませviewDidLoad
んviewDidAppear
。から正しいフレームサイズを取得してviewDidLayoutSubviews
ビューの更新を実行できましたが(レイアウトを無効にする必要があります)、回転を処理するよりもviewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
無意味になり、2つの方法がそれを解決します。
レイアウトを無効にして無意味な計算やレイアウトなどを実行する必要があるかどうかわからないため、理想的willTransitionToSize
には と ではなく と呼ばれます。didLayoutSubviews
回転やフレーム サイズの変更に関連するあらゆる種類のマジック フラグの使用を避けたいと考えています。
これが発生する前に、View Controllerビューの「真の」サイズを取得する方法はありますか?
編集
コード例を次に示します。
ios - レイアウトを尊重しないUICollectionView
セル サイズを変更するために、回転後にコレクション ビューのレイアウトを変更したいと考えています。シミュレーターではうまく機能します。iPhone 6ではそうではありません。
コードは次のとおりです。