开发者

How to animate the view Left to Right in iPhone?

How to animate the view transition left to right(开发者_运维知识库Similar push view). When i click the button, the view should be transited from left to right. So please guide me and give some sample links.

Thanks.


Suppose that you want to push view2 from the right to replace view1.

// Set up view2
view2.frame = view1.frame;
view2.center = CGPointMake(view1.center.x + CGRectGetWidth(view1.frame), view1.center.y);
[view1.superview addSubview: view2];
// Animate the push
[UIView beginAnimations: nil context: NULL];
[UIView setAnimationDelegate: self];
[UIView setAnimationDidStopSelector: @selector(pushAnimationDidStop:finished:context:)];
view2.center = view1.center;
view1.center = CGPointMake(view1.center.x - CGRectGetWidth(view1.frame), view1.center.y);
[UIView commitAnimations];

Then (optionally) implement this method to remove view1 from the view hierarchy:

- (void) pushAnimationDidStop: (NSString *) animationID finished: (NSNumber *) finished context: (void *) context {
    [view1 removeFromSuperview];
}

In that animation delegate method you may also want to release view1 and set its reference to nil, depending on whether you need to keep it around after the transition.


To animate from left to right you can use the below block of code

    CATransition *transition = [CATransition animation];
    transition.duration = 0.4;
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    transition.type = kCATransitionPush;
    transition.subtype = kCATransitionFromLeft;
    [self.view.window.layer addAnimation:transition forKey:nil];
    [self presentViewController:YOUR_VIEWCONTROLLER animated:YES completion:nil];


Another option is to use blocks for animation with less line of codes and for simplicity:

Here is the sample

CGRect viewLeftRect;//final frames for left view
CGRect viewRightRect;//final frames for right view

[UIView animateWithDuration:0.3f animations:^{
    [viewLeft setFrame:viewLeftRect];
    [viewRight setFrame:viewRightRect];
} completion:^(BOOL finished) {
    //do what ever after completing animation
}];


You can also add animation from right to left like this:

    scrAnimation.frame=CGRectMake(248, 175, 500, 414);  //your view start position

    [UIView animateWithDuration:0.5f
                          delay:0.0f
                        options:UIViewAnimationOptionBeginFromCurrentState
                     animations:^{
                         [scrAnimation setFrame:CGRectMake(0, 175, 500, 414)];   // last position
                     }
                     completion:nil];
0

上一篇:

下一篇:

精彩评论

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

最新问答

问答排行榜