4

UIView向きが変わった後のサイズを取得しようとしています。私のView Controllerでは、ビューを実装didRotateFromInterfaceOrientation:して呼び出しsetNeedsLayout:ます。私のビューのlayoutSubviews方法では、回転後の新しいフレーム サイズに基づいていくつかのロジックを実行しようとしますが、フレーム サイズは新しい方向を反映するように更新されていません (たとえば、横向きに移動した後も 1024x768 ではなく 768x1024 のままです)。

更新されたフレーム サイズを取得するにはどうすればよいですか?

4

2 に答える 2

4

質問が回答済みとして表示されるように、ルイス・オスカーが言ったことで答えるだけです。解決策は、「フレーム」ではなく「境界」プロパティにアクセスすることです。

于 2012-06-22T05:18:55.323 に答える
2

このメソッドを試してください。このメソッドはローテーション時に自動的に呼び出されます。これがお役に立てば幸いです。ありがとう。

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {

    if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) {
        NSLog(@"%f,%f",self.view.frame.size.width,self.view.frame.size.height);
    } else if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
        NSLog(@"%f,%f",self.view.frame.size.width,self.view.frame.size.height);
    }
}
于 2012-06-22T05:26:04.277 に答える