如何Facebook风格过渡

时间:2012-07-11 13:23:23

标签: ios ios5 uiviewcontroller core-animation uiviewanimationtransition

想要实现类似于在Facebook和许多其他应用中使用的视图控制器转换,附加了快照。它是否需要使用CoreAnimation框架或者是否可以在工具包中使用?

enter image description here

2 个答案:

答案 0 :(得分:4)

你必须使用CoreAnimation,除非你想导入某人建议的第三方框架,但使用CoreAnimation非常简单,我建议你学习它,因为它非常强大。这是最简单的方法,可以给你一个想法。一旦掌握了它,你就可以自己构建它,以满足你的需求:

在你的viewcontroller中有2个视图:

@interface yourViewController : UIViewController {
    // The facebook view in the example, this will be the view that moves.
    // Init this view with x=0 and let it cover the whole screen.
    IBOutlet UIView *topView; 

    // The fb menu in the example
    // Init this view so that it stays behind the topView.
    IBOutlet UIView *bottomView; 

    BOOL menuVisible; // init to false in viewDidLoad!
}

在界面构建器中创建它们,或者通过代码创建它们,或者您已经习惯了。让它们相互重叠,这样你只能看到topView,并让buttomView留在它后面。

当用户按下按钮显示菜单时:

-(IBAction)menuButtonPressed:(id)sender {
    // Set up animation with duration 0.5 seconds
    [UIView beginAnimations:@"ToggleMenu" context:nil];
    [UIView setAnimationDuration:0.5];

    // Alter position of topView

    CGRect frame = topView.frame; 

    if (menuVisible) {
        frame.origin.x = 0;
        menuVisible = NO;
    } else {
        frame.origin.x = 300; //Play with this value
        menuVisible = YES;
    }

    topView.frame = frame;   

    // Run animation
    [UIView commitAnimations];
}

当然,您应该为“facebook view”和“menu view”等实现自己的UIView子类,并在上面的示例中用于topView和bottomView。

答案 1 :(得分:1)

看看这个,它可能会给你一个起点: https://github.com/Inferis/ViewDeck/