40

私はiOSの新しい開発者です。

自動レイアウトを使用しています。

私は問題があります。制約の後、UIView の実際のサイズを取得できません。

UIView例、制約付きのサイズを取得したい場合

self.container.frame.size.height

すべてのデバイス サイズに対して常に 550 を返します。しかし、異なるデバイスで実行すると、サイズが異なることがわかります。

ありがとう

4

8 に答える 8

22

UIViewControllerサブクラス内ではなくを介してアクセスが行われると誰もが想定しているためUIView、その答えは実際には役に立ちません。UIViewサブクラスの正しいサイズを取得する正しい方法は、 layoutSubviews.

于 2015-07-06T14:28:23.950 に答える
16

最も簡単な解決策は、-viewDidAppear:(autolayout が実行された後に) そのコードを実行することです。

于 2014-12-26T05:48:37.133 に答える
13

UIViewメソッドを使用できますintrinsicContentSize

ここに画像の説明を入力

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/#//apple_ref/occ/instm/UIView/intrinsicContentSizeについて読むことができます

于 2014-12-26T13:37:11.480 に答える
8

これは素晴らしいです。

autolayout の使用中に layoutsubviews メソッドを使用せずにフレームを取得する場合は、これを使用します。

dispatch_async(dispatch_get_main_queue(), ^{
        NSLog(@"View frame: %@", NSStringFromCGRect(view.frame));
    })
于 2015-12-29T13:06:37.193 に答える
1

ビューが表示される前にいくつかの変更を行うことができるためviewDidLayoutSubviews、最適なタイミングはです。viewDidAppear

于 2014-12-26T13:31:34.650 に答える