ChatPopoverView.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. //
  2. // ChatPopoverView.h
  3. // AIIM
  4. //
  5. // Created by qitewei on 2025/5/7.
  6. //
  7. #import <UIKit/UIKit.h>
  8. NS_ASSUME_NONNULL_BEGIN
  9. typedef NS_ENUM(NSInteger, PopoverViewArrowDirection) {
  10. PopoverViewArrowDirectionUp, // 箭头向上,弹窗在源视图下方
  11. PopoverViewArrowDirectionDown, // 箭头向下,弹窗在源视图上方
  12. PopoverViewArrowDirectionAuto, // 自动根据空间选择方向
  13. PopoverViewArrowDirectionNone // 无箭头
  14. };
  15. typedef NS_ENUM(NSInteger, PopoverViewPosition) {
  16. PopoverViewPositionTop, // 弹窗在源视图顶部
  17. PopoverViewPositionBottom, // 弹窗在源视图底部
  18. PopoverViewPositionAuto // 自动选择位置
  19. };
  20. @interface ChatPopoverView : UIView
  21. /**
  22. 初始化弹窗
  23. @param contentView 弹窗内容视图
  24. @param sourceView 源视图(弹窗指向的视图)
  25. @return 弹窗实例
  26. */
  27. - (instancetype)initWithContentView:(UIView *)contentView sourceView:(UIView *)sourceView;
  28. /**
  29. 显示弹窗
  30. */
  31. - (void)show;
  32. /**
  33. 隐藏弹窗
  34. */
  35. - (void)dismiss;
  36. /**
  37. 是否允许点击外部区域隐藏弹窗,默认为YES
  38. */
  39. @property (nonatomic, assign) BOOL shouldDismissOnOutsideTap;
  40. /**
  41. 弹窗位置,默认为PopoverViewPositionAuto
  42. */
  43. @property (nonatomic, assign) PopoverViewPosition preferredPosition;
  44. /**
  45. 箭头方向,默认为PopoverViewArrowDirectionAuto
  46. 如果设置了preferredPosition,此属性会被忽略
  47. */
  48. @property (nonatomic, assign) PopoverViewArrowDirection arrowDirection;
  49. /**
  50. 弹窗与源视图的间距,默认为0
  51. */
  52. @property (nonatomic, assign) CGFloat sourceViewGap;
  53. /**
  54. 是否显示箭头,默认为YES
  55. */
  56. @property (nonatomic, assign) BOOL showArrow;
  57. /**
  58. 弹窗背景色,默认为白色
  59. */
  60. @property (nonatomic, strong) UIColor *popoverBackgroundColor;
  61. /**
  62. 边框颜色,默认为lightGrayColor
  63. */
  64. @property (nonatomic, strong) UIColor *borderColor;
  65. /**
  66. 边框宽度,默认为1.0
  67. */
  68. @property (nonatomic, assign) CGFloat borderWidth;
  69. /**
  70. 圆角半径,默认为5.0
  71. */
  72. @property (nonatomic, assign) CGFloat cornerRadius;
  73. /**
  74. 箭头高度,默认为8.0
  75. */
  76. @property (nonatomic, assign) CGFloat arrowHeight;
  77. /**
  78. 弹窗与屏幕边缘的最小间距,默认为10.0
  79. */
  80. @property (nonatomic, assign) CGFloat popoverMargin;
  81. @end
  82. NS_ASSUME_NONNULL_END