0

iOS4.3を使用しています。

UIToolbar だけを持つビューと、残りのビューをカバーするサブビューを備えた UIViewController があります。メインの UIView には、任意の形状に適合させるためのスプリングとストラットがあり、サブビューも同様です。xib はデフォルトで縦向きです。

この UIViewController を UISplitViewController の右側に配置します。このView Controllerを表示する前は私のiPadは横向きで、ずっと横向きのままです...明確にするために、私は向きを変えていません。

xib は 768w と 1004h なので、私のサブビューは 768w と 960h です。

-viewDidLoad私のサブビューは768x960です。

-viewWillAppear私のサブビューは768x960です。

-viewDidAppear私のサブビューは768x960です。

しかし、実際に iPad で見ると、UISplitViewController の右側は 704px の幅 (あるべき姿) で、ビューとサブビューの幅は 704px しかありません。

ただし、コードまたはView Controllerのライフサイクルのどの時点でも、クエリself.viewまたはサブビューを実行して、幅が704pxであることがわかりませんでした。

私のサブビューは UIScrollView であり、私の REAL サイズに基づいて scrollView.contentSize を変更したいので、ビュー全体のサイズに基づいていくつかの変更を加える必要がありますself.view

ビューの実際のサイズを取得できる View Controller ライフサイクルのどこかが必要です。と を試しましframeboundsが、どちらも常に 768x906 を表示します。

NSLog(@"scroll view frame=%@ bounds=%@", NSStringFromCGRect(self.scrollView.frame), NSStringFromCGRect(self.scrollView.bounds));

NSLog(@"view frame=%@ bounds=%@", NSStringFromCGRect(self.view.frame), NSStringFromCGRect(self.view.bounds));

UIViewController *detailVC = [self.splitViewController.viewControllers objectAtIndex:1];
NSLog(@"splitview frame=%@ bounds=%@", NSStringFromCGRect(detailVC.view.frame), NSStringFromCGRect(detailVC.view.bounds));
4

1 に答える 1

0

UIViewControllerメソッドを使用する必要がありますviewWillLayoutSubviews。これは、スクロールビューを更新するのに最適な場所です。

ビューコントローラは縦向きで開始することに注意してください。ある時点で、横向きに回転します。willRotateToInterfaceOrientation:duration:デバッグの目的で、メソッドとメソッドをオーバーライドすることをお勧めしますdidRotateFromInterfaceOrientation:

于 2012-10-18T05:12:49.313 に答える