【问题标题】:How to push entire view in iOS including navigation bar and toolbar如何在 iOS 中推送整个视图,包括导航栏和工具栏
【发布时间】:2014-10-19 07:49:12
【问题描述】:

我有 3 个视图通过导航控制器连接在一起。中间视图(#2)具有特殊的样式,导航栏和工具栏是完全白色的,可以与白色背景融为一体。

当在视图 2 上滑动时,导航栏和工具栏的过渡动画(默认情况下)以缓慢淡入按钮和被推/弹出视图的样式,即导航栏和工具栏在过渡期间保持可见。

由于视图 2 的白色导航栏和工具栏,这最终看起来不太好。

我想要实现的是让每个视图全部推送/弹出,即包括其导航栏和工具栏。换句话说,不是导航栏和工具栏在过渡期间保持不变,而是希望它们在它们所属的视图中滑入/滑出。

我附上了 2 个变体的屏幕截图。

最好放弃导航控制器并为每个视图设置自己的导航栏和工具栏吗?或者,对于我当前的设置,这是否可以轻松实现。

如果有人能指出我正确的方向,那就太好了。


这是来自 Apple Remote 应用程序,显示了我想要创建的效果。

这是来自 Apple Mail 应用程序的默认过渡效果。

【问题讨论】:

标签: ios objective-c uinavigationcontroller


【解决方案1】:

在视图控制器之间使用自定义转换会比为UIView 设置动画效果更好,不过您可以向UIView 对象添加物理行为以使其更有趣。

Apple 为其自己的应用程序使用交互式自定义过渡(只需查找)。这也是一篇很好的文章:

http://www.doubleencore.com/2013/09/ios-7-custom-transitions/

【讨论】:

    【解决方案2】:

    使用带有导航栏和收费栏的所需屏幕创建您的视图。

    在动作上,使用视图动画带来视图 2 或删除您想要的动画。

    [UIView animateWithDuration:0.2
     animations:^{set your fram(0,0,320,480/568) or (320,0,320,480/568)}
     completion:^(BOOL finished){ 
     }];
    

    您可以将视图添加到 keywindow。

    希望这会对你有所帮助。

    【讨论】:

      【解决方案3】:

      为什么不简单地在目标视图控制器上使用 hidesBottomBarWhenPushed 属性?

              // hide the bottom tabbar when we push this view controller
              destinationViewController.hidesBottomBarWhenPushed = YES;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多