PopView.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. //
  2. // PopView.h
  3. // iPad-Education
  4. //
  5. // Created by 李林 on 2017/10/18.
  6. // Copyright © 2017年 iLaihua. All rights reserved.
  7. //
  8. #import <UIKit/UIKit.h>
  9. static CGFloat const animationDuration = 0.25;
  10. static CGFloat const popViewInsert = 5;
  11. typedef NS_ENUM(NSUInteger, PopViewDirection) {
  12. PopViewDirection_PopUpLeft,
  13. PopViewDirection_PopUpBottom,
  14. PopViewDirection_PopUpRight,
  15. PopViewDirection_PopUpTop,
  16. PopViewDirection_PopUpNone,
  17. PopViewDirection_SlideFromLeft = 20,
  18. PopViewDirection_SlideFromRight = 21,
  19. PopViewDirection_SlideFromUp = 22,
  20. PopViewDirection_SlideFromBottom = 23,
  21. PopViewDirection_SlideInCenter = 24,
  22. PopViewDirection_SlideBelowView = 25,
  23. };
  24. @interface PopView : UIView
  25. @property (nonatomic ,assign) BOOL clickOutHidden; //点击除了popContainerView的其他地方是否消失default to yes
  26. @property (nonatomic ,weak) UIView *responseOnView; //设置后事件会透过去,响应该view上的事件
  27. @property (nonatomic ,assign) CGFloat keyBoardMargin; //输入框与键盘的间隔,默认为10px
  28. @property (nonatomic ,strong) UIView *popContainerView; //包含要显示的View的父控件
  29. //popView的移除回调
  30. @property (nonatomic ,copy) void(^willRemovedFromeSuperView)(void);
  31. @property (nonatomic ,copy) void(^didRemovedFromeSuperView)(void);
  32. /*
  33. 1、可自定义显示隐藏动画
  34. @param contentView 要显示的控件内容
  35. @param showAnimation 显示动画
  36. @param hidenAnimation 消失动画
  37. **/
  38. + (instancetype)popContentView:(UIView *)contentView
  39. showAnimation:(CABasicAnimation *)showAnimation
  40. hidenAnimation:(CABasicAnimation *)hidenAnimation;
  41. /*
  42. 2、可实现类似QQ和微信消息页面的右上角微型菜单弹窗
  43. @param contentView 要显示的控件内容
  44. @param direct 方向
  45. @param onView 一般是响应事件的按钮
  46. **/
  47. + (instancetype)popUpContentView:(UIView *)contentView
  48. direct:(PopViewDirection)direct
  49. onView:(UIView *)onView;
  50. /*
  51. 3、可实现类似QQ和微信消息页面的右上角微型菜单弹窗
  52. @param contentView 要显示的控件内容
  53. @param direct 方向
  54. @param onView 一般是响应事件的按钮
  55. @param offset 一般是响应事件的按钮
  56. @param triangleView 可以自定义的任意的view来替代三角指示控件
  57. @param animation 是否动画
  58. **/
  59. + (instancetype)popUpContentView:(UIView *)contentView
  60. direct:(PopViewDirection)direct
  61. onView:(UIView *)onView
  62. offset:(CGFloat)offset
  63. triangleView:(UIView *)triangleView
  64. animation:(BOOL)animation;
  65. /*
  66. 4、从屏幕外显示出控件
  67. @param contentView 要显示的控件内容
  68. @param contentView 方向
  69. **/
  70. + (instancetype)popSideContentView:(UIView *)contentView
  71. direct:(PopViewDirection)direction;
  72. /*
  73. 5、可实现DropDownMunu类型的动画
  74. @param contentView 要显示的控件内容
  75. @param belowView 内容在belowView的下方,整个控件是添加到belowView的superview上的
  76. **/
  77. + (instancetype)popSideContentView:(UIView *)contentView
  78. belowView:(UIView *)belowView;
  79. //隐藏当前的popView
  80. + (void)hidenPopView;
  81. //获取当前的popView
  82. + (instancetype)getCurrentPopView;
  83. @end