MSNavigationPaneViewController 0.2.0

MSNavigationPaneViewController 0.2.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新版本2014年12月

Eric Horacek维护。



  • 作者:
  • Eric Horacek

介绍

MSNavigationPaneViewControllerEric Horacek 编写,供 Monospace Ltd. 使用。

MSNavigationPaneViewController 是一个视图控制器,用于处理两个重叠子视图控制器的展示。"面板"视图可以通过滑动手势移动以显示下面的"主"视图。这种界面范式可以轻松实现 Facebook、Path 等许多应用的导航功能。

以下是一些使用 MSNavigationPaneViewController 而不是众多类似重叠视图控制器类的原因:

  • 该类更注重简洁性。它的接口几乎是最简单的,且易于扩展。
  • 当导航面板根据滑动速度沿着任意方向滑动时,它都有平滑的弹跳动画。
  • 它提供多种外观类型和打开方向,可自定义其视觉风格。
  • 它不需要您对面板或主视图控制器进行子类化,以便将它们作为子视图控制器添加。
  • 用以显示主视图控制器的滑动手势不会干扰面板视图控制器视图中的 UITableViews 或其他 UIScrollViews
  • 当使用 setPaneViewController:animated:completion: 方法设置新的面板视图控制器时,它会先向右动画移出,替换,然后动画回到左边。这防止了当新的面板视图控制器替换当前视图时产生令人不适的"弹出"效果。

打开方向

  • 左边MSNavigationPaneOpenDirectionLeft)- 默认打开方向。导航面板从左侧打开。左右滑动也可以显示主视图。

  • 顶部MSNavigationPaneOpenDirectionTop)- 导航面板从顶部打开。上下滑动也可以显示主视图。

 

外观类型

MSNavigationPaneViewController 提供了几种外观类型。它们各自改变了拖动面板视图时面板视图视觉风格的某些方面。通过 navigationPaneViewController.appearanceType 访问器设置导航面板的外观类型。可能的类型如下:

  • MSNavigationPaneAppearanceTypeNone)- 默认外观。拖动面板视图时,不会以任何方式改变主视图的外观。
  • 视差MSNavigationPaneAppearanceTypeParallax)- 当拖动面板视图时,从右侧滚动主视图。
  • 缩放MSNavigationPaneAppearanceTypeZoom)- 当拖动面板视图时,从缩进状态缩放主视图。

外观类型的默认值是 MSNavigationPaneAppearanceTypeNone

触摸

转发触摸

为了通过需要滑动/平移手势的视图转发触摸,以便 MSNavigationPaneViewController 不拦截它们,只需将它们的 Class 添加到 touchForwardingClasses

[navigationPaneViewController.touchForwardingClasses addObject:UISwitch.class];

默认情况下,包含 UISliderUISwitch

禁用面板拖动

要禁用面板拖动并防止 MSNavigationPaneViewController 拦截触摸,设置

navigationPaneViewController.draggingEnabled == NO;

示例

“示例”目录中包含了 MSNavigationPaneViewController 的两个示例,要运行它们,请打开 Examples.xcworkspace

示例项目依赖于 PRTween,它是作为 git 子模块包含的。要安装,请运行以下命令

$ git submodule init
$ git submodule update
  • Example.xcodeproj - 不使用 Storyboards 或 Nibs
  • Storyboard Example.xcodeproj - 与 Storyboards 一起使用

要求

需要 iOS 5.0、ARC 和 QuartzCore 框架。

贡献

欢迎 forks、patches 和其他反馈。

许可

版权所有(c)2012-2013 Monospace Ltd。保留所有权利。

此代码根据 MIT 许可证的条款和条件分发。

本许可证授权任何人免费获取本软件及其相关文档文件(统称为“软件”)的副本,用以处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本以及允许软件提供者进行上述操作,前提是遵守以下条件:

上述版权声明和本许可证声明应包含在软件的所有副本或其实质性部分中。

软件按其当前状态提供,不提供任何形式的明示或暗示保证,包括但不限于适销性、特定目的适用性和非侵权性。在任何情况下,原作者或版权所有者对任何索赔、损害或其他责任,无论源于合同、侵权或其他原因,因软件或其使用或其他事宜而引发、产生或与其相关,均不承担任何责任。