3

次のコードで本当に奇妙な問題をデバッグしようとしています:

if(condition1) {
   ImageViewController* imageViewer = [[ImageViewController alloc] initWithImageData:tappedItem];
   [self presentViewController:imageViewer animated:YES completion:^{
      [imageViewer loadImage];
   }];
}
else if(condition2) {
   DocumentViewController* docViewer = [[DocumentViewController alloc] init];
   [self presentViewController:docViewer animated:YES completion:nil];
}

condition1つまり、との状態に応じて、condition2の 2 つのサブクラスのうちの 1 つがUIViewControllerユーザーにモーダルに表示されます。

2 番目のケースではすべて問題ありませんが、最初のケースでは、View Controller が画面の下部からスライドして表示される通常のアニメーションが表示されません。代わりに、少し遅れて突然表示され、画面全体が覆われます。もう 1 つの奇妙な点は、解雇アニメーションで、View Controller 内のイメージ ビューが透明になることです。

完了ブロックを削除しても効果はありません。View Controller を のインスタンスに置き換えてUIViewControllerも、なんらかの理由でアニメーションがインスタンスに対しても機能しないことを示す以外は効果がありませんUIViewController

などで何か間違ったことをしたのではないかと考えてviewDidLoad、ビューのロード/表示メソッドをコメントアウトしようとしましたが、役に立ちませんでした。

アプリにはタブバーがあり、表示されたくないため、ビューコントローラーをナビゲーションスタックにプッシュすることはオプションではありません。

アップデート

のインスタンスを do に置き換えるImageViewControllerDocumentViewController、アニメーションが発生します。ImageViewController問題は次のようになります:アニメーションを台無しにするために何ができたでしょうか?

4

4 に答える 4

4

解決策を見つけましたが、本当の原因が何であるかはまだわかりません。

修正は、メソッドUIViewControllerでモーダルに表示されているビューの背景色を設定することでした。viewDidload

self.view.backgroundColor = [UIColor grayColor];

実際に何が起こったのかを理解できたら、ここに投稿します。

于 2013-05-28T12:02:20.510 に答える
0

それは私にも起こりました..背景色を変更してもあまり役に立ちませんでした。私は次のことを行いました-それは非常に素晴らしいことがわかりました:

 -(void) viewWillAppear:(BOOL)animated
 {
     [super viewWillAppear:NO];
     self.view.userInteractionEnabled = FALSE;
     self.view.hidden = TRUE;
     self.navigationController.navigationBar.alpha = 0;
}

 -(void) viewDidAppear:(BOOL)animated
 {
     [super viewDidAppear:NO];
     float width = self.view.frame.size.width;
     float height = self.view.frame.size.height;
     self.view.frame = CGRectMake(0, height, width, height);
     self.view.hidden = FALSE;
     [UIView animateWithDuration:0.7f animations:^{
     self.view.frame = CGRectMake(0, 0, width, height);
    self.navigationController.navigationBar.alpha = 1;
} completion:^(BOOL finished){
    self.view.userInteractionEnabled = TRUE;

}];
 }
于 2014-06-25T16:38:02.930 に答える
0

背景色の設定は、iOS 8 で機能します。また、Interface Builder の不透明設定のチェックを外します。

于 2014-11-20T12:24:55.633 に答える