JXPopupView:一个轻量级的自己设置视图弹出框架
来源:暴走的鑫鑫     阅读:834
牛牛兔源码
发布于 2018-11-14 23:19
查看主页

前言

随着APP业务增多,各种五花八门的弹框也增多,各种细节都需要得到不同的定制。最后就沉淀出JXPopupView这个库,可以应对多类需求,轻巧灵活,不再为弹框忧愁了。

最近看了一篇文章阿里云的这群疯子,深有感触,很多牛逼的东西都是逼出来的,而不是一个天才凭一己之力创造出来的。就像文章里面说的,随着淘宝业务剧增,云服务再不更新,就会由于技术瓶颈导致业务停滞,也可能导致淘宝的失败。

对于我们普通开发者来说,不可能一来就写出兼容任何需求的代码(随着经验添加,可以写出扩展性强的代码)。我们要做的是,在业务不断变化的时候,也在不断思考,不断优化代码,沉淀出一个经得起考验的框架。

说了一点鸡汤哈,下面来看看JXPopupView的细节效果。

Github

下载源码,一睹为快!JXPopupView

特性

预览

动画效果

动画效果GIF
渐隐渐现FadeInOut.gif
缩放ZoomInOut.gif
往左Leftward.gif
往右Rightward.gif
往下Downward.gif
往上Upward.gif
部分自己设置-弹性动画Spring.gif
完全自己设置动画CustomAnimation.gif

背景风格

背景风格GIF
固定色值FadeInOut.gif
blur lightBlurlight.gif
blur darkBlurDark.gif

指定containerView

指定containerViewGIF
WindowZoomInOut.gif
UIViewController.viewVCView.gif
CustomViewCustomView.gif

要求

Swift 4.2编写,支持iOS9以上

安装

CocoaPods

在Podfile文件里面增加

pod 'JXPopupView'

而后再pod install(最好先pod update)

使用

//- 确定contentView的目标framelet contentView = Bundle.main.loadNibNamed("TestAlertView", owner: nil, options: nil)?.first as? TestAlertViewlet x: CGFloat = (containerView.bounds.size.width - 200)/2let y: CGFloat = (containerView.bounds.size.height - 200)/2contentView.frame = CGRect(x: x, y: y, width: 200, height: 200)//- 确定动画效果var animator = JXPopupViewFadeInOutAnimator()//- 初始化JXPopupViewlet popupView = JXPopupView(containerView: containerView, contentView: contentView, animator: animator!)//- 配置交互popupView.isDismissible = truepopupView.isInteractive = truepopupView.isPenetrable = false//- 配置背景popupView.backgroundView.style = self.backgroundStylepopupView.backgroundView.blurEffectStyle = self.backgroundEffectStylepopupView.backgroundView.color = self.backgroundColor//- 展现popupViewpopupView.display(animated: true, completion: nil)//- 消失popupView//通过extension提供的jx_popupView属性,获取JXPopupView进行操作,可以不用全局持有JXPopupView属性contentView.jx_popupView?.dismiss(animated: true, completion: nil)

动画自己设置

JXPopupViewAnimationProtocol协议方法

/// 初始化配置动画驱动器    ///    /// - Parameters:    ///   - contentView: 自己设置的弹框视图    ///   - backgroundView: 背景视图    ///   - containerView: 展现弹框的视图    /// - Returns: void    func setup(contentView: UIView, backgroundView: JXBackgroundView, containerView: UIView)    /// 解决展现动画    ///    /// - Parameters:    ///   - contentView: 自己设置的弹框视图    ///   - backgroundView: 背景视图    ///   - animated: 能否需要动画    ///   - completion: 动画完成后的回调    /// - Returns: void    func display(contentView: UIView, backgroundView: JXBackgroundView, animated: Bool, completion: @escaping ()->())    /// 解决消失动画    ///    /// - Parameters:    ///   - contentView: 自己设置的弹框视图    ///   - backgroundView: 背景视图    ///   - animated: 能否需要动画    ///   - completion: 动画完成后的回调    func dismiss(contentView: UIView, backgroundView: JXBackgroundView,animated: Bool, completion: @escaping ()->())

自己设置动画建议

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 系统环境 服务器应用
相关推荐
05-条件控制语句
ES6之Map的用法
JS 删除数组中的NaN
【AI硬核干货】大模型上下文工程实践指南-第3章:提示词技术(上)
Docker实战:安装单节点的zookeeper环境
首页
搜索
订单
购物车
我的