【问题标题】:How to facebook style transition如何进行 facebook 风格转换
【发布时间】:2012-07-11 13:23:22
【问题描述】:

想要实现类似于 facebook 和许多其他应用程序中使用的视图控制器转换,附加快照。它需要使用 CoreAnimation 框架还是工具包中提供?

【问题讨论】:

  • 它在 Cocoa Touch 中不可用,您必须在屏幕上查看和查看控制器并自己处理将顶部的控制器拖到一边。
  • 任何入门的东西/资源?
  • 对不起。我不知道有什么好的资源

标签: ios ios5 uiviewcontroller core-animation uiviewanimationtransition


【解决方案1】:

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

在您的视图控制器中有 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 视图”和“菜单视图”等实现自己的 UIView 子类,并用于上面示例中的 topView 和 bottomView。

【讨论】:

  • 您好,我也在尝试在我的 iphone 应用程序中实现相同的功能。我按照您的建议使用了两个 UIView,并使用了 toggleMenu 动画来滑动 topView。但由于我有一个 UINavigationController 它不会与 topView 一起滑动,它只是保持在相同的位置。我该怎么办?非常感谢您的建议。
  • 由于这是一个“自己动手”的解决方案,将它与 UINavigationController 结合起来会很复杂。如果你不能忍受 NavigationController 停留在你的视图之上,你可以停止使用它并制作你自己的导航栏(我会推荐这个),或者你可以在菜单可见时隐藏它。我敢肯定也有一些方法可以将它推到一边,但我认为这没有足够的价值来尝试找出如何......
  • @user1280436 您尝试使用 navigationcontroller.view 进行动画处理,然后导航栏也会进行动画处理。请尝试一下,我以前没有这样做过。
【解决方案2】:

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

【讨论】:

  • 您好,我也在尝试在我的 iphone 应用程序中实现相同的功能。我按照建议使用了两个 UIView,并使用了 toggleMenu 动画来滑动 topView。但由于我有一个 UINavigationController 它不会与 topView 一起滑动,它只是保持在相同的位置。我该怎么办?非常感谢您的建议。提前致谢。
猜你喜欢
  • 1970-01-01
  • 2010-11-06
  • 2020-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 2011-04-14
  • 1970-01-01
相关资源
最近更新 更多