1

2 つのセクション (上部と下部) に分割したい pageviewcontroller にビューコントローラーがネストされています。それぞれのビュー (以下のコード) にフレームを正しく割り当てていますが、最初にレンダリングしたときは正しくありません。スワイプしてからもう一度戻すと、レンダリングされた画面が正しく表示されます。何が起こっているのか分かりますか?

ここに画像の説明を入力

ここに画像の説明を入力

-(void) viewDidLoad 
{

self.controller1 = [self.storyboard    
    instantiateViewControllerWithIdentifier: @"controller1"];
self.controller2 = [self.storyboard 
    instantiateViewControllerWithIdentifier:@"controller2"];

[self.view addSubview:self.controller1.view];
[self.view addSubview:self.controller2.view];

[self addChildViewController:self.controller1];
[self addChildViewController:self.controller2];
}

- (void)viewWillAppear 
{
UIInterfaceOrientation orientation = self.interfaceOrientation;
BOOL navigationBarHidden = [self.navigationController isNavigationBarHidden];
CGRect navigationBarFrame = self.navigationController.navigationBar.frame;
CGRect screenBounds = [[UIScreen mainScreen] bounds];
CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];
CGRect viewSize = self.view.frame;    

self.controller1.view.frame = 
     CGRectMake(0, 0, screenBounds.size.width, screenBounds.size.width);

self.controller2.view.frame = 
     CGRectMake(0, screenBounds.size.width,
                             screenBounds.size.width, applicationFrame.size.height - screenBounds.size.width);
}
4

1 に答える 1

1

問題を理解した。問題は、分割画面を表示したView Controllerではなく、私のカスタムpageviewcontrollerにあります。

-viewDidAppearではなく-viewDidLoadにpageviewcontrollerの子を追加していました。違いは、-viewDidLoadにスーパービューの正しいサイズがなかったため、すべての子ビューが正しく計算されなかったことです。

于 2012-11-20T01:50:17.403 に答える