玛丽波平是iOS系统中UIViewController
的一个类别,它可以用于以更多灵活性呈现类似模态视图控制器。
等等,怎么了?网上有大量类似的项目可以做到这一点!
没错,但这个项目的以下特点值得关注
UIWindow
,玛丽波平使用 UIViewControllers
容器,因此旋转得到妥善处理是的,您可以这么说,它是超级绝妙的!
——好吧。但为什么是玛丽波平呢? Popin、弹出、模态看起来可能很相似,但实际上有一些细微的差别。在这里,控制器视图是在其父控制器内呈现的,这就是为什么我们称它为popin控制器。由于它作为类别实现,因此它就像著名保姆那样神奇且优雅。
v1.4.2
v1.4.1
v1.4
v 1.3.1
v 1.3
v 1.2
v 1.1.1
v 1.1
v 1.0
只需在podfile中添加以下行
pod 'MaryPopin'
将分类文件拖动到您的项目中,您就完成了。
完整文档可在 cocoaDocs 上找到:http://cocoadocs.org/docsets/MaryPopin/.
首先,导入 UIViewController+MaryPopin.h
头文件。
在您的当前视图控制器中,您可以创建一个视图控制器并将其作为弹出显示。
//Create the popin view controller
UIViewController *popin = [[UIViewController alloc] initWithNibName:@"NibName" bundle:@"Bundle"];
//Customize transition if needed
[popin setPopinTransitionStyle:BKTPopinTransitionStyleSlide];
//Add options
[popin setPopinOptions:BKTPopinDisableAutoDismiss];
//Customize transition direction if needed
[popin setPopinTransitionDirection:BKTPopinTransitionDirectionTop];
//Present popin on the desired controller
//Note that if you are using a UINavigationController, the navigation bar will be active if you present
// the popin on the visible controller instead of presenting it on the navigation controller
[self presentPopinController:popin animated:YES completion:^{
NSLog(@"Popin presented !");
}];
相应地,要从当前视图控制器中关闭弹出显示
[self dismissCurrentPopinControllerAnimated:YES completion:^{
NSLog(@"Popin dismissed !");
}];
默认情况下,弹出显示将在父控件视图中居中。但您可以为它提供一个应居中的 CGRect
。注意,该 CGRect
必须在父控件视图边界内,否则可能会导致意外的行为。
BKTPopinControllerViewController *popin = [[BKTPopinControllerViewController alloc] init];
[popin setPopinTransitionStyle:BKTPopinTransitionStyleCrossDissolve];
[popin setPopinTransitionDirection:BKTPopinTransitionDirectionTop];
CGRect presentationRect = CGRectOffset(CGRectInset(self.view.bounds, 0.0, 100.0), 0.0, 200.0);
[self.navigationController presentPopinController:popin fromRect:presentationRect animated:YES completion:^{
NSLog(@"Popin presented !");
}];
示例项目展示了如何使用不同的过渡样式来显示和关闭弹出显示。
如果您正在使用版本 0.29 或更高版本的 CocoaPods,可以使用以下命令行快速运行演示项目
pod try MaryPopin
MaryPopin 需要 Xcode 5(可选使用 UIKit Dynamics 和动态效果)。可以使用 iOS 5 作为目标部署版本。注意,某些过渡样式在 iOS 7 下不受支持,将被默认过渡样式替代。
MaryPopin 使用 ARC。
如果在非 ARC 项目中使用 MaryPopin,您需要在每个 MaryPopin 源文件上设置 -fobjc-arc
编译器标志。
要在 Xcode 中设置编译器标志,转到您的活动目标并选择“构建阶段”选项卡。然后选择 MaryPopin 源文件,按 Enter,插入 -fobjc-arc,然后“完成”以为 MaryPopin 启用 ARC。
欢迎为错误修复或改进做出贡献。请随时提交拉取请求。
MaryPopin 适用于 MIT 许可证。有关更多信息,请参阅 LICENSE 文件。