0

アプリに短い遅延を追加しようとしています。スプラッシュ画面がフェードアウトするだけなので、アプリの他の機能には影響しません(他に何も実行されていないため)。私はさまざまなアプローチを試しましたが、成功しませんでした。(これはviewControllerのviewDidLoadで発生しています):

Cのスリープ:...//スプラッシュ画面を追加[self.viewaddSubview:splashScreen];

sleep(3);
[self fadeOut:splashScreen];

NSObjectのperformSelector(UIViewControllerはNSObjectを継承しないため、これは機能すると思いますか?)

[self performSelector:@selector(fadeOut:) afterDelay:3];

NSTimeInterval:

 //wait 3 seconds
NSTimeInterval theTimeInterval = 3;
[self fadeOut:splashScreen withADelayOf:&theTimeInterval];

これがfadeOutです(NSTimeIntervalの例で動作するように書かれています)

- (void) fadeOut:(UIView *)viewToToggle withADelayOf:(NSTimeInterval* ) animDelay {

[UIView setAnimationDelay:*animDelay];

[UIView animateWithDuration:0.25 animations:^{
    viewToToggle.alpha = 0.0;
}];

}

私はfadeOutを取得しますが、遅延は取得しません。誰かが私を正しい方向に動かすことができますか?ありがとう。

4

4 に答える 4

3

dispatch_afterまたはanimateWithDuration:delay:options:animations:completion:を試すことができます。

double delayInSeconds = 0.5;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
   //yourcode
});

また

[UIView animateWithDuration:0.175 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{
        //your code
    }completion:^(BOOL completed){
        //animation completion execution
}];
于 2012-10-01T17:48:36.200 に答える
2

ビューの一部のプロパティを少し遅れてアニメーション化する場合は、この方法に依存する必要があります。

+(void)animateWithDuration:(NSTimeInterval)duration delay:(NSTimeInterval)delay options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion

こちらのrefdocをご覧ください。

したがって、コードは次のようになります。

[UIView animateWithDuration:0.25 delay:3.0 options: UIViewAnimationOptionCurveLinear animations:^{
    viewToToggle.alpha = 0.0;
} completion: nil];
于 2012-10-01T17:49:58.880 に答える
0

TigueroとJ2TheCはどちらも、私が進む必要のある正確な方向を示してくれました。

他の誰かが支援を必要とする場合に備えて私が使用したコードは次のとおりです。

//add the splash screen
[self.view addSubview:splashScreen];

//fade it out with a delay
[UIView animateWithDuration:0.75 delay:3.0 options:UIViewAnimationOptionCurveEaseIn
    animations:^{
        splashScreen.alpha = 0.0;
    }
    completion:^ (BOOL finished) {
        //do something on end
}];
于 2012-10-01T18:24:42.983 に答える
-1

1つのことを実行します。AppdelegateとdidfinishLunchingでuiimageviewrefを作成します。これを実行します。//ここでメインビューコントローラーをwindwoに割り当てないでください。

{
img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"splash.png"]];

img.frame = CGRectMake(0, 0, 320, 480);

[self.window addSubview:img];

[NSTimer scheduledTimerWithTimeInterval:3 target:self selector:@selector(removeSplash) userInfo:nil repeats:NO];
[self.window makeKeyAndVisible];


}



- (void)removeSplash{

    [img removerFromSuperview];
    self.window.rootViewController = self.viewController;



 }
于 2012-10-01T18:32:32.153 に答える