4

私は 2 つの単純な UIViewControllers を持っています。それらのビューは 320 x 460 で、ステータス バーがあります。私はAppDelegateで行います

self.window.rootViewController = [[[SimpleController alloc] init] autorelease];

[self.window makeKeyAndVisible];

SimpleController にはボタンがあります

- (IBAction) switchToVerySimpleController
{
  [UIView transitionWithView: [[UIApplication sharedApplication] keyWindow]
                    duration: 0.5
                     options: UIViewAnimationOptionTransitionFlipFromLeft
                  animations:^{ [[UIApplication sharedApplication] keyWindow].rootViewController = [[[VerySimpleController alloc] init] autorelease]; }
                  completion: NULL];
}

新しいビュー (VerySimpleController.view) は青色で塗りつぶされています。アニメーションの後、新しいビューの下部に小さな白いストライプ (ステータス バーのサイズ) が表示され、所定の位置にジャンプします。なぜそれが起こっているのか、それを回避する方法は? ステータスバーが原因だと思います.両方のビューで IB で statusBar = Unspecified を設定しようとしましたが、役に立ちません。

更新: 最初から (.info ファイルの設定を通じて) statusBar を非表示にすると、ビューの調整は行われません。それでも...ステータスバーを表示する必要があり、そのアニメーションが適切に機能する必要があります。

4

2 に答える 2

0

この問題はまだ時々発生するようで、おそらくバグです。

この「ジャンプ」を回避するviewWillAppearには、表示する必要があるビュー コントローラーのメソッドに次のコードを追加します。

迅速

navigationController?.navigationBar.layer.removeAllAnimations()

客観的-c

[self.navigationController.navigationBar.layer removeAllAnimations];

トランジションは「ジャンプ」なしで終了します。

于 2016-12-01T14:16:10.970 に答える