Skip to content

LSTPopView iOS万能弹窗 (QQ群:1045568246 微信:a_LSTKit)

License

Notifications You must be signed in to change notification settings

LoSenTrad/LSTPopView

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7a5f52e · Oct 14, 2024

History

62 Commits
Mar 16, 2021
Mar 16, 2021
Mar 5, 2020
Mar 5, 2020
Mar 5, 2020
Feb 26, 2021
Oct 14, 2024
Feb 26, 2021
Mar 5, 2020

Repository files navigation

LSTPopView iOS万能弹窗

Platform Language License CocoaPods Compatible

LSTPopView 万能弹窗,功能强大,易于拓展,性能优化和内存控制让其运行更加的流畅和稳健, LSTPopView的出现,可以让我们更专注弹窗页面的布局. 省心省力 ! 提高开发效率 !

swift版本地址(版本初期,可能bug较多):https://github.com/JJQ700/JQPopView.git

前言

  • 考虑到笔者的精力问题,遇到问题请先查看 API、效仿Demo、阅读README、搜索 Issues。如果是BUG 或 Feature,最好是提Issue
  • 联系方式: LoSenTrad@163.com, QQ群:1045568246, 微信:a_LSTKit
  • 开发环境: Xcode12.3, iOS13.5, iPhone XS Max~

博客地址

目录

特性

  • 提供丰富的api,高度自定义弹窗,简单入手使用
  • 支持弹出动画,消失动画,主动动画等多重动画搭配
  • 支持点击,长按,拖拽,横扫手势交互
  • 支持多弹窗管理:编队,堆叠,优先级等
  • 支持指定弹窗父类,eg: UIWindow,self.view等
  • 安全且内存占用小,弹窗内存自动回收
  • 提供生命周期api,自定义动画控制
  • 自动规避键盘,防止被键盘遮挡
  • 支持定时器,多定时器机制
  • 支持纯代码/xib页面
  • 支持横竖屏切换
  • 支持多代理机制
  • 支持二次封装,比如组件LSTHUD,LSTAlertView等

版本更新历史

安装

  • OC版本安装

    • CocoaPods安装: 在podfile文件中添加以下描述,然后 pod install 或者 pod update

      pod 'LSTPopView'
      
    • Carthage安装:(暂时未适配)

  • Swift版本安装

    • (计划开发中)
  • 手动导入集成

    • 1.拖动LSTPopView文件下5个文件到项目中
    LSTPopView.h
    LSTPopView.m
    UIView+LSTPV.h
    UIView+LSTPV.m
    LSTPopViewProtocol.h
    pod 'LSTTimer'

基本使用

  • 代码示例

    //自定义view
    LSTPopViewTVView *customView = [[LSTPopViewTVView alloc] initWithFrame:CGRectMake(0, 0, 300,400)];
    //创建弹窗PopViiew 指定父容器self.view, 不指定默认是app window
    LSTPopView *popView = [LSTPopView initWithCustomView:customView
                                              parentView:self.view
                                                popStyle:LSTPopStyleSmoothFromBottom
                                            dismissStyle:LSTDismissStyleSmoothToBottom];
    //弹窗位置: 居中 贴顶 贴左 贴底 贴右 
    popView.hemStyle = LSTHemStyleBottom;
    LSTPopViewWK(popView)
    //点击背景触发
    popView.bgClickBlock = ^{ [wk_popView dismiss]; };
    //弹窗显示
    [popView pop];
  • 调试日志

    /** 调试日志类型 */
    typedef NS_ENUM(NSInteger, LSTPopViewLogStyle) {
    LSTPopViewLogStyleNO = 0,          // 关闭调试信息(窗口和控制台日志输出)
    LSTPopViewLogStyleWindow,          // 开启左上角小窗
    LSTPopViewLogStyleConsole,         // 开启控制台日志输出
    LSTPopViewLogStyleALL              // 开启小窗和控制台日志
    };
    • 调试小窗: S表示当前已经显示的弹窗数, R表示在移除队列的弹窗, S+R是表示当前所有的弹窗数

使用注意事项

(一定用weak修饰)

  • 解析: LSTPopView对每个弹窗都有自动内存销毁机制, 外部对弹窗的强引用对打破这种自动内存销毁机制, 比如成员变量用strong修饰,否则弹窗不能自动销毁,导致内存回收不了.

  • 类成员变量使用规范:

    //成员变量用weak修饰, 不可以用strong修饰
    @property (nonatomic,weak) LSTPopView *popView;
  • 成员变量的创建

    LSTPopViewTVView *customView = [[LSTPopViewTVView alloc] initWithFrame:CGRectMake(0, 0, 300,400)];
    //弹窗实例创建
    LSTPopView *popView = [LSTPopView initWithCustomView:customView
                                                  popStyle:LSTPopStyleSmoothFromBottom
                                              dismissStyle:LSTDismissStyleSmoothToBottom];
    //这里赋值给成员变量self.popView
    self.popView = popView;
    [popView pop];
  • 错误使用:

    //直接赋值给成员变量 导致成员变量为空, 请参考以上使用规范
    self.popView = [LSTPopView initWithCustomView:customView
                                           popStyle:LSTPopStyleSmoothFromBottom
                                       dismissStyle:LSTDismissStyleSmoothToBottom];

演示效果

  • 应用市场常用的示例场景
QQ,微信,UC,微博,抖音
图片名称
拖拽移除,横扫移除
图片名称
  • 丰富的出入场动画, 拖拽, 横扫动画
弹出动画,中间,自上,自左,自下,自左
图片名称
移除动画,中间,至上,至左,至下,至左
图片名称
拖拽,横扫动画
图片名称
  • 弹窗位置
弹窗位置,中间,贴顶,贴左,贴底,贴右
图片名称
X轴,Y轴调教,宽度和高度调教
图片名称
  • 自动规避键盘遮挡,指定容器,定时器
自动规避键盘遮挡
图片名称
指定容器弹出
图片名称
弹窗计时
图片名称
  • 多弹窗管理(优先级,编队)
app启动多弹窗优先级显示
图片名称
多窗口编队使用
图片名称
  • 支持横竖屏
屏幕旋转
图片名称

作者

LoSenTrad@163.com, QQ群:1045568246, 微信:a_LSTKit

版权

尊重劳动成果, 人人有责.