【问题标题】:Best approach to PageController / custom navigationPageController / 自定义导航的最佳方法
【发布时间】:2014-12-04 20:03:04
【问题描述】:

我正在开发一款遵循 Google 材料设计的应用。当我像 PageController 一样在屏幕上横向滑动时,我需要顶部图像(一种自定义 NavigationBar,不使用 NavigationController)淡入新图像,同时在该自定义顶部淡入和滑动新标题标签导航栏背景图片。

我可以使用此代码制作动画,但它是通过按下按钮或类似方式运行的,我怎样才能使其与手指滑动同步?

    // Fade and slide title and image
myTitleLabelConstraint.constant = myTitleLabelConstraint.constant - 20;
[self.view setNeedsUpdateConstraints];
[UIView animateWithDuration:1.0 delay:0 usingSpringWithDamping:1.0 initialSpringVelocity:1.5 options:UIViewAnimationOptionTransitionNone animations:^{
    // Animate
    [self.view layoutIfNeeded];
    myTitleLabel.alpha = 1;
    topImageView.image = [UIImage imageNamed:@"blue_navBar.png"];
}completion:^(BOOL finished) {
    // Complete
}];

我需要这种情况发生以及在 3 个 ViewControllers - 2 个 UIViewControllers 和 1 个 UITableViewController 之间滑动。我正在考虑使用托管 PageController 的容器 - 这是一个好的解决方案吗?

我看过 this 教程,但我发现很难理解他的实际意思。 Scrollview - 为什么要使用它?

所以我的问题总结如下:如何在带有或不带有 PageController 的 3 个 ViewControllers(带有 PageController至少物理)?

非常感谢您的帮助!

更新

这就是我的 StoryBoard 现在的样子:

仔细观察:

左侧的 ViewController 是包含 3 个容器的“主机”,而这三个容器中的每一个都链接到右侧的一个 ViewController。

最好的问候, 埃里克

【问题讨论】:

    标签: ios objective-c animation uiview uigesturerecognizer


    【解决方案1】:

    您可以尝试查看 iOS 中的交互式过渡。如果您查找 UIPercentDrivenInteractiveTransitions(在 iOS 7 中引入),那应该可以满足您的需求。您或多或少已经拥有动画代码,UIPercentDrivenInteractiveTransitions 允许您将UIPanGestureRecognizer 连接到您的动画以浏览每个动画帧。这是一个非常好的blog,它教如何做到这一点。

    【讨论】:

    • 我明白了,这看起来是一个可行的解决方案。这种方法的内存管理如何?如果我不使用 PageController,屏幕外的 ViewController 不会消耗不必要的系统资源吗?另外,我如何将物理应用到 VC 管理中,以便当用户像 PageController 通常管理的那样抬起手指时,VC 会迅速恢复原位?
    • 内存管理其实还不错。在这种情况下抬起手指应该是调用 finishInteractiveTransition 和 cancelInteractiveTransition 或类似的简单问题。
    • 那么它看起来是一个非常好的解决方案。在放置视图控制器时 - 我可以创建 3 个 UIViewController 并将它们连接到 3 个容器视图,我将像这样 [VC2-VC1-VC3] 放置在主/主机视图控制器上吗?而 VC2 和 VC3 不在屏幕上?
    • 嗯,交互式转换应该被认为是来自 UINavigationController 的常规推送。在交互式过渡开始时,您构建下一个 VC 并为过渡对象提供在两个 VC 之间发生的动画块。将它们连接到故事板中可能不是最好的方法,因为您必须在过渡开始时建立您的 VC。
    • 如果你真的想要一个利用交互式弹簧动画/阻尼物理的过渡,你会想要采用这种方法,因为 Cocoa 会分解过渡的帧并擦洗通过它们进行交互式过渡。
    猜你喜欢
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多