DMCustomModalViewController 是一个 UIViewController
子类,它接收一个根视图控制器并将其以优雅的方式模态呈现(类似于 Gmail)。
你不应该继承它,它作为一个容器视图控制器,你可以直接实例化并使用。
适用于 iOS 7 及更高版本
DMCustomModalViewController
提供了一种快速且简单的方法来以优雅的动画显示模态视图控制器。它还有一个选项,可以显示带有优雅覆盖层的模态视图控制器,但不全屏,同时还保持当前视图控制器在后台。
TL;DR: 查看提供的示例。
在示例目录中运行 pod install
命令
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:^{
}];
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。
任何获得此软件及其相关文档副本(“软件”)的人,可以在此无需付费的前提下,自由地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并且允许将软件提供给他人以供其处理,条件如下:
上述版权声明和本许可声明应包含在软件的任何副本或主要部分中。
软件按“现状”提供,不提供任何形式的质量保证,无论是明示的、暗示的,还是关于适销性、专用目的适用性或无侵权性的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任源自合同行动、侵权行为或其他方式,无论源于、出于或与软件及其使用或其他任何处理有关。