2012-03-26 8 views
0

にビューコントローラをフェードインしようとすると、私がやっているviewDidLoad以内に次iOS版 - 黒からのビューコントローラをフェージングで

  • 黒の背景にUIViewを作成します。
  • UIViewにアルファ値1.0fを与える。
  • UIViewをサブビューとして[self view]に追加します。
  • 黒をフェードするUIViewからanimateWithDurationを経由してアルファ値を0.0fに変更します。計画通りと
  • UIViewを削除

[[self view] subviews]から多くの場合、これは動作します。しかし時には、黒の直前に隠したいビューコントローラをちらっと見ています。 UIViewが描画されます。

これを回避する手段はありますか? viewDidLoadよりもこのコードを配置する方が良いでしょうか?

感謝

+1

なぜ 'self.view.alpha'を設定しないのですか? – CodaFi

答えて

0

はい、loadViewメソッドでビューを追加してのviewDidLoadまたはviewDidAppearでの実際のアニメーションを行います。または上記のコメント者が言ったように、単にビューのアルファを使用してください。

0

私はUIViewControllerに隠されたいUIView作成しますのnibファイルを、リンクとを経由してIBOutletは、

@interface SomeViewController: UIViewController 
{ 
     IBOutlet UIView *blackView; 
} 

UIViewControllerでの-(void) viewDidLoad;方法、私は次の

を行うだろう
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Fade the opacity of blackView over 1 second, 
    // then remove it from the view controller. 
    [UIView animateWithDuration:1 
        delay:0 
       options:UIViewAnimationOptionCurveEaseOut 
      animations:^{ 
       blackView.layer.opacity = 0; 
      } 
      completion:^(BOOL finished) { 
       // This line prevents the flash 
       blackView.layer.opacity = 0; 
       [blackView removeFromSuperview]; 
      }]; 
} 
関連する問題