DMCustomModalViewController 1.0.1

DMCustomModalViewController 1.0.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布上次发布2014年12月

未声明 维护。



  • Thomas Ricouard

DMCustomModalViewController 是一个 UIViewController 子类,它接收一个根视图控制器并将其以优雅的方式模态呈现(类似于 Gmail)。

你不应该继承它,它作为一个容器视图控制器,你可以直接实例化并使用。

适用于 iOS 7 及更高版本

特性

DMCustomModalViewController 提供了一种快速且简单的方法来以优雅的动画显示模态视图控制器。它还有一个选项,可以显示带有优雅覆盖层的模态视图控制器,但不全屏,同时还保持当前视图控制器在后台。

  1. 两种显示方式:全屏或非全屏。
  2. 优雅的动画!
  3. 保持当前上下文,并在背景中显示视图,并添加覆盖层。
  4. 还有更多功能。

如何使用

TL;DR: 查看提供的示例。

运行示例并手动安装

在示例目录中运行 pod install 命令

  1. classes/ 文件夹中的 DMCustomModalViewController.h 和 .m 文件添加到您的 Xcode 项目中。
  2. 将 QuartzCore.framework 添加到“链接目标与库”中 (.xcodeproj -> 构建流程)
  3. 在您想使用的地方导入 DMCustomModalViewController.h

全屏

ModalRootViewController *root = [[ModalRootViewController alloc]initWithNibName:nil bundle:nil];
_fullScreenModal = [[DMCustomModalViewController alloc]initWithRootViewController:root
                                                                               parentViewController:self];
[self.fullScreenModal setDelegate:self];
[self.fullScreenModal presentRootViewControllerWithPresentationStyle:DMCUstomModalViewControllerPresentFullScreen controllercompletion:^{

}];

部分屏幕

image

ModalRootViewController *root = [[ModalRootViewController alloc]initWithNibName:nil bundle:nil];
_partModal = [[DMCustomModalViewController alloc]initWithRootViewController:root
                                                                               parentViewController:self];
[self.partModal setDelegate:self];
self.partModal.rootViewControllerHeight = 350;
[self.partModal presentRootViewControllerWithPresentationStyle:DMCustomModalViewControllerPresentPartScreen controllercompletion:^{

}];

如果您不以全屏的方式显示它,则需要设置 rootViewControllerHeight 属性。此值将用于确定需要显示的 rootViewController 的大小。

关闭

DMCustomModalViewController 提供了一个内置的分类,只需在传递给 DMCustomModalViewController 实例的 rootViewController 中导入 DMCustomModalViewController.h 文件,您就可以访问一个新属性 customModalViewController。然后您可以从自身中选择性地关闭模态。

[self.customModalViewController dismissRootViewControllerWithcompletion:^{

}];

更好的实现方法是为您自己的 rootViewController 构建自己的 delegate,这样触发模态的控制器也负责关闭它。

代理人

DMCustomViewController 目前提供一个代理方法来通知你当它被关闭时。

@protocol DMCustomViewControllerDelegate <NSObject>
@optional
- (void)customModalViewControllerDidDismiss:(DMCustomModalViewController *)modalViewController;
@end

定制

您可以在呈现模态视图控制器之前设置属性 CGFloat animationSpeed 来自定义动画速度。默认值为 0.30。

您还可以自定义当呈现模态视图时,父控制器视图的缩放比例。这将影响回跳效果。为此,修改属性 CGFloat parentViewScaling,默认值为 0.80。

此外,默认情况下当您在未全屏呈现的模态视图上点击父视图时,它将关闭。您可以通过将 tapParentViewToClose 设置为 NO 来关闭此功能。

如果您的 rootViewController 视图有导航栏,并且将 dragRootViewNavigationBar 设置为 YES(默认为 YES),您将能够拖动导航栏。它仅在非全屏呈现模态视图时有效。

还有其他一些属性供您自行调整。

示例中提供了滑块,以更好地了解每个属性的效果。只需在模拟器中运行即可 :)

许可

版权所有 © 2013 by Thomas Ricouard。

任何获得此软件及其相关文档副本(“软件”)的人,可以在此无需付费的前提下,自由地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并且允许将软件提供给他人以供其处理,条件如下:

上述版权声明和本许可声明应包含在软件的任何副本或主要部分中。

软件按“现状”提供,不提供任何形式的质量保证,无论是明示的、暗示的,还是关于适销性、专用目的适用性或无侵权性的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任源自合同行动、侵权行为或其他方式,无论源于、出于或与软件及其使用或其他任何处理有关。