1

私はviewControllerからのビューを含むAppDelegateを備えたIPADの単純な構造を持っています:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    ClockVC *clockVC = [[ClockVC alloc]init];
    clockVC.view.frame = CGRectMake(100, 100, clockVC.view.bounds.size.width, clockVC.view.bounds.size.height);

    [self.window addSubview:clockVC.view];
    [self.window makeKeyAndVisible];

    return YES;
}

clockVCには、次のコードで定義されたviewDidLoadがあります。

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.autoresizingMask = UIViewAutoresizingNone;
    self.view.autoresizesSubviews = UIViewAutoresizingNone;
}

clockVCの境界はIBによって定義され、application:didFinishLaunching...でオーバーライドされます。幅と高さはそれぞれ200と150です。

ClockVCは、ワンステップ自動回転のメソッドを実装します:/

/ Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return YES;
}

-(void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{  
     [UIView animateWithDuration:0.5 
                     animations:^{self.view.alpha = 0;}
     ];
}

-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{ 
    [UIView animateWithDuration:1 
                     animations:^{self.view.alpha = 1;}
     ];
}

最初のロード時に、ページが正しく表示され、clockVCビューが配置されます。clockVCビュー(autoResizeMaskがUIViewAutoresizingNonに設定されている)を回転すると、画面全体を表示するようにサイズが変更されます。

なぜ ??初期サイズを維持したいのですが。

ここに私の問題のスクリーンショットがあります。ローテーション前: ここに画像の説明を入力してください

ローテーション後: ここに画像の説明を入力してください

4

1 に答える 1

2

このためにルートビューを使用せず、代わりにビューコントローラのビューにサブビューを追加してください。UIViewControllers通常、コンテナのスペース全体(この場合はウィンドウ)を埋めるように設計されています。

たとえば、にを追加する場合UIViewControllerUINavigationControllerナビゲーションコントローラーは、ナビゲーションコントローラーのレイアウト(ナビゲーションバーが表示されているかどうかなど)に従ってビューコントローラーのビューのサイズを決定する責任を引き継ぎます。UIWindowがどのように正確に動作するかはわかりませんが(これはあまり明確に文書化されていないと思います)、SDKの多くの場所で、ビューコントローラーの親が子の配置とサイズを担当します(UIPopoverControllerなどUITabBarController。 )。

于 2011-04-27T13:53:32.227 に答える