Fade In Fade Out Animation

后端 未结 13 1165
生来不讨喜
生来不讨喜 2021-01-30 01:45

Here is some code I struggle with for a while.

If you start the fade in animation, the label text fades in. If I start the fade out animation the the label text fades ou

13条回答
  •  广开言路
    2021-01-30 02:08

    When you call the fadeIn and fadeOut methods back to back like you're doing, the code is run instantaneously, so you'll only see animation from the last method called. UIView block based animation provides a completion handler, which seems to be exactly what you're looking for. So your code might looks something like this:

    -(IBAction)startFade:(id)sender {
    
        [_label setAlpha:0.0f];        
    
        //fade in
        [UIView animateWithDuration:2.0f animations:^{
    
            [_label setAlpha:1.0f];
    
        } completion:^(BOOL finished) {
    
            //fade out
            [UIView animateWithDuration:2.0f animations:^{
    
                [_label setAlpha:0.0f];
    
            } completion:nil];
    
        }];
    }
    

    Swift:

    @IBAction func startFade(_ sender: AnyObject) {
    
        label.alpha = 0.0
    
        // fade in
        UIView.animate(withDuration: 2.0, animations: { 
            label.alpha = 1.0
        }) { (finished) in
            // fade out
            UIView.animate(withDuration: 2.0, animations: {
                label.alpha = 0.0
            })
        }
    }
    

提交回复
热议问题