YMPopupViewProtocol.h 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. //
  2. // YMPopupViewProtocol.h
  3. // yuemoClient
  4. //
  5. // Created by YoMi on 2023/11/6.
  6. //
  7. #import <Foundation/Foundation.h>
  8. @class YMPopupView;
  9. typedef void (^ _Nullable YmVoidBlock)(void);
  10. typedef void (^ _Nullable YmPointBlock)(CGPoint point);
  11. typedef void (^ _Nullable YmAlertCountDownBlock)(YMPopupView * _Nonnull popView,NSTimeInterval timeInterval);
  12. typedef void (^ _Nullable YmKeyBoardChangeBlock)(CGRect beginFrame,CGRect endFrame,CGFloat duration);
  13. typedef UIView * _Nonnull (^ _Nullable YmViewBlock)(void);
  14. /** 调试日志类型 */
  15. typedef NS_ENUM(NSInteger, YMPopupViewLogStyle) {
  16. YMPopupViewLogStyleNO = 0, // 关闭调试信息(窗口和控制台日志输出)
  17. YMPopupViewLogStyleWindow, // 开启左上角小窗
  18. YMPopupViewLogStyleConsole, // 开启控制台日志输出
  19. YMPopupViewLogStyleALL // 开启小窗和控制台日志
  20. };
  21. /** 显示动画样式 */
  22. typedef NS_ENUM(NSInteger, YMPopupStyle) {
  23. YMPopupStyleFade = 0, // 默认 渐变出现
  24. YMPopupStyleNO, // 无动画
  25. YMPopupStyleScale, // 缩放 先放大 后恢复至原大小
  26. YMPopupStyleTop, // 顶部
  27. YMPopupStyleSmoothFromTop, // 顶部 平滑淡入动画
  28. YMPopupStyleSmoothFromLeft, // 左侧 平滑淡入动画
  29. YMPopupStyleSmoothFromBottom, // 底部 平滑淡入动画
  30. YMPopupStyleSmoothFromRight, // 右侧 平滑淡入动画
  31. YMPopupStyleSpringFromTop, // 顶部 平滑淡入动画 带弹簧
  32. YMPopupStyleSpringFromLeft, // 左侧 平滑淡入动画 带弹簧
  33. YMPopupStyleSpringFromBottom, // 底部 平滑淡入动画 带弹簧
  34. YMPopupStyleSpringFromRight, // 右侧 平滑淡入动画 带弹簧
  35. YMPopupStyleCardDropFromLeft, // 顶部左侧 掉落动画
  36. YMPopupStyleCardDropFromRight, // 顶部右侧 掉落动画
  37. };
  38. /** 消失动画样式 */
  39. typedef NS_ENUM(NSInteger, YMDismissStyle) {
  40. YMDismissStyleFade = 0, // 默认 渐变消失
  41. YMDismissStyleNO, // 无动画
  42. YMDismissStyleScale, // 缩放
  43. YMDismissStyleTop, // 顶部
  44. YMDismissStyleSmoothToTop, // 顶部 平滑淡出动画
  45. YMDismissStyleSmoothToLeft, // 左侧 平滑淡出动画
  46. YMDismissStyleSmoothToBottom, // 底部 平滑淡出动画
  47. YMDismissStyleSmoothToRight, // 右侧 平滑淡出动画
  48. YMDismissStyleCardDropToLeft, // 卡片从中间往左侧掉落
  49. YMDismissStyleCardDropToRight, // 卡片从中间往右侧掉落
  50. YMDismissStyleCardDropToTop, // 卡片从中间往顶部移动消失
  51. };
  52. /** 主动动画样式(开发中) */
  53. typedef NS_ENUM(NSInteger, YMActivityStyle) {
  54. YMActivityStyleNO = 0, /// 无动画
  55. YMActivityStyleScale, /// 缩放
  56. YMActivityStyleShake, /// 抖动
  57. };
  58. /** 弹窗位置 */
  59. typedef NS_ENUM(NSInteger, YMPositionStyle) {
  60. YMPositionStyleCenter = 0, //居中
  61. YMPositionStyleTop, //贴顶
  62. YMPositionStyleLeft, //贴左
  63. YMPositionStyleBottom, //贴底
  64. YMPositionStyleRight, //贴右
  65. YMPositionStyleTopLeft, //贴顶和左
  66. YMPositionStyleBottomLeft, //贴底和左
  67. YMPositionStyleBottomRight, //贴底和右
  68. YMPositionStyleTopRight //贴顶和右
  69. };
  70. /** 拖拽方向 */
  71. typedef NS_ENUM(NSInteger, YMDragStyle) {
  72. YMDragStyleNO = 0, //默认 不能拖拽窗口
  73. YMDragStyleX_Positive = 1<<0, //X轴正方向拖拽
  74. YMDragStyleX_Negative = 1<<1, //X轴负方向拖拽
  75. YMDragStyleY_Positive = 1<<2, //Y轴正方向拖拽
  76. YMDragStyleY_Negative = 1<<3, //Y轴负方向拖拽
  77. YMDragStyleX = (YMDragStyleX_Positive|YMDragStyleX_Negative), //X轴方向拖拽
  78. YMDragStyleY = (YMDragStyleY_Positive|YMDragStyleY_Negative), //Y轴方向拖拽
  79. YMDragStyleAll = (YMDragStyleX|YMDragStyleY) //全向拖拽
  80. };
  81. ///** 可轻扫消失的方向 */
  82. typedef NS_ENUM(NSInteger, YMSweepStyle) {
  83. YMSweepStyleNO = 0, //默认 不能拖拽窗口
  84. YMSweepStyleX_Positive = 1<<0, //X轴正方向拖拽
  85. YMSweepStyleX_Negative = 1<<1, //X轴负方向拖拽
  86. YMSweepStyleY_Positive = 1<<2, //Y轴正方向拖拽
  87. YMSweepStyleY_Negative = 1<<3, //Y轴负方向拖拽
  88. YMSweepStyleX = (YMSweepStyleX_Positive|YMSweepStyleX_Negative), //X轴方向拖拽
  89. YMSweepStyleY = (YMSweepStyleY_Positive|YMSweepStyleY_Negative), //Y轴方向拖拽
  90. YMSweepStyleALL = (YMSweepStyleX|YMSweepStyleY) //全向轻扫
  91. };
  92. /**
  93. 可轻扫消失动画类型 对单向横扫 设置有效
  94. YMSweepDismissStyleSmooth: 自动适应选择以下其一
  95. YMDismissStyleSmoothToTop,
  96. YMDismissStyleSmoothToLeft,
  97. YMDismissStyleSmoothToBottom ,
  98. YMDismissStyleSmoothToRight
  99. */
  100. typedef NS_ENUM(NSInteger, YMSweepDismissStyle) {
  101. YMSweepDismissStyleVelocity = 0, //默认加速度 移除
  102. YMSweepDismissStyleSmooth = 1 //平顺移除
  103. };
  104. NS_ASSUME_NONNULL_BEGIN
  105. @protocol YMPopupViewProtocol <NSObject>
  106. /** 点击弹窗 回调 */
  107. - (void)popupViewBgClickForPopView:(YMPopupView *)popView;
  108. /** 长按弹窗 回调 */
  109. - (void)popupViewBgLongPressForPopView:(YMPopupView *)popView;
  110. /** 将要显示 */
  111. - (void)popupViewWillPopForPopView:(YMPopupView *)popView;
  112. /** 已经显示完毕 */
  113. - (void)popupViewDidPopForPopView:(YMPopupView *)popView;
  114. /** 倒计时进行中 timeInterval:时长 */
  115. - (void)popupViewCountDownForPopView:(YMPopupView *)popView forCountDown:(NSTimeInterval)timeInterval;
  116. /** 倒计时倒计时完成 */
  117. - (void)popupViewCountDownFinishForPopView:(YMPopupView *)popView;
  118. /** 将要开始移除 */
  119. - (void)popupViewWillDismissForPopView:(YMPopupView *)popView;
  120. /** 已经移除完毕 */
  121. - (void)popupViewDidDismissForPopView:(YMPopupView *)popView;
  122. @end
  123. NS_ASSUME_NONNULL_END