7

私はUIViewにありUITabControllerます。そして、そのUITableView中にあります。

通話ステータスバーを切り替えると、何も実行されず、ビューのサイズが自動的に変更されません。

UIStatusBarアプリの起動時に通話が切り替えられたかどうかに基づいて適切なサイズが想定されますがUIStatusBar、アプリの実行中に切り替えられた場合は何も変更されません。

のある別のUINavigationControllerタブビューは、サイズが細かく変更されているようです。

これがコードです

if([indexPath indexAtPosition:0] == 0 || [indexPath indexAtPosition:0] == 1){
        if(!airportChooser){
            AirportChooser = [[AirportChooserController alloc] init];
            AirportChooser.targetController = self;
            AirportChooser.view.autoresizesSubviews = YES;  
            AirportChooser.view.autoresizingMask = UIViewAutoresizingFlexibleHeight;
            [airportChooser.view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleWidth];
        }
        AirportChooser.target = [indexPath indexAtPosition:0];
        [self.parentViewController.parentViewController.view addSubview:airportChooser.view];
        self.parentViewController.parentViewController.view.autoresizesSubviews = YES;
        self.parentViewController.parentViewController.view.contentMode = UIViewContentModeRedraw;
        [self.parentViewController.parentViewController.view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleWidth];
        AirportChooser.view.contentMode = UIViewContentModeRedraw;
        // [airportChooser open];
    }
4

2 に答える 2

15

のサイズ変更マスクをUIView正しく設定しましたか?サイズタブで設定Interface Builderできます。クリックできるのは赤い線です。

次のようなコードを使用してコードで設定することもできます。

[view setAutoresizingMask:UIViewAutoresizingFlexibleWidth | 
                          UIViewAutoresizingFlexibleHeight];

また、スーパービューがautoresizesSubviewsYESに設定されていることを確認してください。

これについての詳細は、UIViewのドキュメントを参照してください。

于 2010-07-27T10:07:14.333 に答える
0

klaaspeiterの答えは理にかなっており、私の特定のケースでは正しい答えである場合もありますが、それは、pushViewController:viewアニメーション:NOの代わりにaddSubviewを使用してUINavigationControllerのビューにサブビューを追加していたためです。

于 2010-07-28T09:28:47.597 に答える