玛丽波平 1.4.3

玛丽波平 1.4.3

测试已测试
语言语言 Obj-CObjective C
许可 MIT
发布上次发布2018年2月

Gaspar ViotSebg82维护。




玛丽波平是iOS系统中UIViewController的一个类别,它可以用于以更多灵活性呈现类似模态视图控制器。

等等,怎么了?网上有大量类似的项目可以做到这一点!

没错,但这个项目的以下特点值得关注

  • 无需子类化,您可以将它用于现有的视控制器,就像使用模态控制器一样
  • 无需操作 UIWindow,玛丽波平使用 UIViewControllers 容器,因此旋转得到妥善处理
  • 触摸弹窗外的区域将自动消失
  • 可以自定义控制器呈现的大小
  • 提供更多过渡样式和方向的选择
  • 轻微的视差效果以更好地配合iOS 7指南
  • 自动移动以响应键盘事件
  • 在呈现和消失转换过程中实现完成块
  • iOS5/6/7支持

是的,您可以这么说,它是超级绝妙的!

——好吧。但为什么是玛丽波平呢? Popin、弹出、模态看起来可能很相似,但实际上有一些细微的差别。在这里,控制器视图是在其父控制器内呈现的,这就是为什么我们称它为popin控制器。由于它作为类别实现,因此它就像著名保姆那样神奇且优雅。

MaryPopin demo

更改

v1.4.2

  • 修复了在取消连锁弹窗时出现的问题

v1.4.1

  • 警告和一些小错误修复(感谢@Mazyod)

v1.4

  • 添加了配置模糊背景的选项
  • 修复了与iOS 5.x相关的崩溃问题
  • 修复了未使用变量警告

v 1.3.1

  • 修复了默认对齐选项的问题

v 1.3

  • 添加了具有模糊背景视窗的选项
  • 添加了更改在父级中弹窗对齐的选项(感谢@leverdeterre)
  • 添加了定义自定义进入和退出动画的样式块(感谢jonasman)
  • 修复了外观事件转发问题

v 1.2

  • 添加了取消背景视图和自动消失选项之间的耦合的选项
  • 修复了导致在多个弹窗链中背景视图消失的问题

v 1.1.1

  • 代码重构

v 1.1

  • 支持iOS 5 & 6

v 1.0

  • 首次公开发布

入门

Pod方式

只需在podfile中添加以下行

pod 'MaryPopin'

旧式方法

将分类文件拖动到您的项目中,您就完成了。

使用 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 下不受支持,将被默认过渡样式替代。

ARC

MaryPopin 使用 ARC。
如果在非 ARC 项目中使用 MaryPopin,您需要在每个 MaryPopin 源文件上设置 -fobjc-arc 编译器标志。
要在 Xcode 中设置编译器标志,转到您的活动目标并选择“构建阶段”选项卡。然后选择 MaryPopin 源文件,按 Enter,插入 -fobjc-arc,然后“完成”以为 MaryPopin 启用 ARC。

贡献

欢迎为错误修复或改进做出贡献。请随时提交拉取请求。

许可

MaryPopin 适用于 MIT 许可证。有关更多信息,请参阅 LICENSE 文件。

Analytics