测试已测试 | ✗ |
语言语言 | Objective C++Objective C++ |
许可证 | MIT |
发布上次发布 | 2016年12月 |
由 Tom Adriaenssen 和 Michael Ochs 维护。
ViewDeck 是一个用于管理各种侧边菜单的框架。它支持左右侧边菜单,并通过编程和用户手势管理侧边菜单的显示。
ViewDeck 的核心是 IIViewDeckController
,它是一个容器视图控制器。您可以将您的中心视图控制器以及侧边视图控制器分配给它。IIViewDeckController
确保您的内容视图控制器在需要时添加到视图控制器层次结构和视图层次结构。
ViewDeck 不提供任何可配置的菜单。您需要将您的中心视图控制器和侧边视图控制器分配给 ViewDeck 使得 ViewDeck 可以接管并按需显示它们。
IIViewDeckController
支持左右侧视图控制器,当然您也可以只使用一个侧视图。您可以通过编程打开和关闭侧视图,例如通过一个按钮的点击。默认情况下 IIViewDeckController
也监听用户的滑动手势并交互式地打开侧视图。
当然 ViewDeck 与现有的容器视图控制器(如 UINavigationController
或 UITabBarController
)配合得很好。
试用 ViewDeck 的最快方法是使用 Cocoapods。通过运行 pod try ViewDeck
会在 Xcode 中创建一个项目,运行演示应用。当然,您也可以简单地检查存储库并运行那里的示例应用。只需在 Example
文件夹中打开 ViewDeckExample.xcworkspace
文件并运行它。
你可能很想知道它的外观。以下是示例应用的一些截图
查看控制器操作
ViewDeck.framework
移入您的 Xcode 项目中ViewDeck支持左右两侧的视图控制器。每个都可以设置为nil(如果是nil,则无法在该侧进行平移或打开,并且该侧的手势识别器将被禁用)。所有内容的基类是IIViewDeckController
。典型的视图堆叠配置如下。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
MyCenterViewController *centerViewController = [MyCenterViewController new];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:centerViewController];
MySideViewController *sideViewController = [MySideViewController new];
UINavigationController *sideNavigationController = [[UINavigationController alloc] initWithRootViewController:sideViewController];
IIViewDeckController *viewDeckController = [[IIViewDeckController alloc] initWithCenterViewController:navigationController rightViewController:sideNavigationController];
self.window.rootViewController = viewDeckController;
[self.window makeKeyAndVisible];
return YES;
}
您也可以在飞行过程中切换视图控制器。只需将视图控制器分配给相应的属性,视图堆叠控制器将会完成剩余的工作。
// prepare view controllers
UIViewController* newController = [[UIViewController alloc] init];
self.viewDeckController.rightController = newController;
您还可以通过将其设置为nil
来移除一侧的控制器。
类似于UINavigationViewController
,IIViewDeckController
会将自身分配给其子视图。您可以使用viewDeckController
属性来获取封闭视图堆叠控制器的访问权限。
#import <ViewDeck/ViewDeck.h>
...
[self.viewDeckController openSide:IIViewDeckSideRight animated:YES];
如果控制器不是由IIViewDeckController
封装的,则此属性返回nil
。
ViewDeck试图尽可能完美地嵌入UIKit中,因此利用了很多已存在的钩子。为了控制屏幕上侧视图控制器的大小,您只需设置其preferredContentSize
。ViewDeck将尊重该大小宽度,同时确保高度总是视图堆叠控制器本身的宽度。
您可以对ViewDeck如何呈现侧视图控制器进行很多自定义。请查阅-[IIViewDeckController animatorForTransitionWithContext:]
和IIViewDeckTransitionAnimator
的文档。
特别感谢Tom Adriaenssen,是他启动了这个项目并创建了一个非常伟大的框架,帮助了许多开发者。遗憾的是,他不能再维护这个框架了。如果您想了解原因,请查看他的博客,实际上这是个不错的消息,祝贺你,Tom! :)
非常感谢了不起的Samo Korosec为ViewDeck设计了美丽的标志!他是一个非常出色的设计师,也是一个有趣的同事。如果您需要完成任务酷炫的应用设计工作,不妨试试!
如果您在应用中使用此代码,请尽量在某个地方提及它的使用。在网站上、关于页面上、在应用中,无论在哪里。或者通过电子邮件或通过GitHub让我知道。知道自己的代码被用到哪里是件好事。此外,如果您有一个使用视图堆叠的优秀应用,并希望它被列在这里,请让我知道!
IIViewDeckController在MIT许可下发布
版权(C)2011-2015,ViewDeck
本软件及关联文档文件(以下简称“软件”)的使用、复制、修改、合并、发布、分发、再许可和/或销售复制品,以及许可向软件提供方提供软件供其使用的权利,在任何限制的前提下予以免费授予,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件的权利,以及允许提供软件的人使用该软件,但以下条件必须遵守:
上述版权声明和本许可声明应包含在软件的所有副本或实质性部分中。
软件按照“原样”提供,不提供任何明示或暗示的保证,包括但不限于对适销性、特定目的适用性和非侵权的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是否因合同、侵权或其他行为引起,无论此等索赔、损害或其他责任是否与软件或软件的使用或其他交易有关。