开发者

UIView chain block animation, delay is not working properly

UPDATE : (I redid my functions so all the animations won't be as nested as before. Still no luck)

I have a piece of code where a try to, in this order:

  1. Hide view A
  2. Show view B
  3. Show view C

The order is important!

The code is the following :

Main function:

        [fileMenuController hide:0.2 andDelay:0.1]; 
        [drawingToolController show:0.2 andDelay:0.2];
        [penSizeMenuController showSubViewWithDuration:0.4];

fileMenuController hide function:

     [UIView animateWithDuration:duration //begin animation
                          delay:delay 
                        options:UIViewAnimationCurveEaseIn 
                     animations:^{
                         [self.view setFrame:CGRectOffset([self.view frame], 0, -self.view.frame.size.height)];             
                     } 
                     completion:nil
     ];

drawingToolController show function:

    [UIView animateWithDuration:duration //begin animation
                          delay:delay
                        options:UIViewAnimationCurveEaseIn 
                     animations:^{
                         [self.view setFrame:CGRectOffset([self.view frame], 0, self.view.frame.size.height)];             
                     } 
                     completion:nil
     ];

penSizeController show function:

    [UIView transitionWithView:self.view 
                  duration:duration
                   options:UIViewAnimationOptionTransitionCurlDown
                animations:^{ [self.view addSubview:subView] ;}
                completion:nil];
self.view.alpha = 1;

My problem is the block penSizeController showSubView starts开发者_StackOverflow社区 with the first animation (fileMenuController hide)!

The first two animations (fileMenuController hide and drawingToolController show) are working properly. When fileMenuController hide is done, drawingToolController starts.

So, does somebody know why the part in the penSizeController showSubView block starts at the same time as the first animation?


I'd imagine it's because the outer animation block doesn't have any animation – because the hide and show creates inner animation blocks – so it immediately calls the completion block.

Either remove the nested animation block in hide and show or add a parameter that disables animation for these nested animation actions.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜