私はiOSの新しい開発者です。
自動レイアウトを使用しています。
私は問題があります。制約の後、UIView の実際のサイズを取得できません。
UIView
例、制約付きのサイズを取得したい場合
self.container.frame.size.height
すべてのデバイス サイズに対して常に 550 を返します。しかし、異なるデバイスで実行すると、サイズが異なることがわかります。
ありがとう
私はiOSの新しい開発者です。
自動レイアウトを使用しています。
私は問題があります。制約の後、UIView の実際のサイズを取得できません。
UIView
例、制約付きのサイズを取得したい場合
self.container.frame.size.height
すべてのデバイス サイズに対して常に 550 を返します。しかし、異なるデバイスで実行すると、サイズが異なることがわかります。
ありがとう
UIViewController
サブクラス内ではなくを介してアクセスが行われると誰もが想定しているためUIView
、その答えは実際には役に立ちません。UIView
サブクラスの正しいサイズを取得する正しい方法は、 layoutSubviews
.
最も簡単な解決策は、-viewDidAppear:
(autolayout が実行された後に) そのコードを実行することです。
UIView
メソッドを使用できますintrinsicContentSize
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/#//apple_ref/occ/instm/UIView/intrinsicContentSizeについて読むことができます
これは素晴らしいです。
autolayout の使用中に layoutsubviews メソッドを使用せずにフレームを取得する場合は、これを使用します。
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"View frame: %@", NSStringFromCGRect(view.frame));
})
ビューが表示される前にいくつかの変更を行うことができるためviewDidLayoutSubviews
、最適なタイミングはです。viewDidAppear