// // ChatPopoverView.h // AIIM // // Created by qitewei on 2025/5/7. // #import NS_ASSUME_NONNULL_BEGIN typedef NS_ENUM(NSInteger, PopoverViewArrowDirection) { PopoverViewArrowDirectionUp, // 箭头向上,弹窗在源视图下方 PopoverViewArrowDirectionDown, // 箭头向下,弹窗在源视图上方 PopoverViewArrowDirectionAuto, // 自动根据空间选择方向 PopoverViewArrowDirectionNone // 无箭头 }; typedef NS_ENUM(NSInteger, PopoverViewPosition) { PopoverViewPositionTop, // 弹窗在源视图顶部 PopoverViewPositionBottom, // 弹窗在源视图底部 PopoverViewPositionAuto // 自动选择位置 }; @interface ChatPopoverView : UIView /** 初始化弹窗 @param contentView 弹窗内容视图 @param sourceView 源视图(弹窗指向的视图) @return 弹窗实例 */ - (instancetype)initWithContentView:(UIView *)contentView sourceView:(UIView *)sourceView; /** 显示弹窗 */ - (void)show; /** 隐藏弹窗 */ - (void)dismiss; /** 是否允许点击外部区域隐藏弹窗,默认为YES */ @property (nonatomic, assign) BOOL shouldDismissOnOutsideTap; /** 弹窗位置,默认为PopoverViewPositionAuto */ @property (nonatomic, assign) PopoverViewPosition preferredPosition; /** 箭头方向,默认为PopoverViewArrowDirectionAuto 如果设置了preferredPosition,此属性会被忽略 */ @property (nonatomic, assign) PopoverViewArrowDirection arrowDirection; /** 弹窗与源视图的间距,默认为0 */ @property (nonatomic, assign) CGFloat sourceViewGap; /** 是否显示箭头,默认为YES */ @property (nonatomic, assign) BOOL showArrow; /** 弹窗背景色,默认为白色 */ @property (nonatomic, strong) UIColor *popoverBackgroundColor; /** 边框颜色,默认为lightGrayColor */ @property (nonatomic, strong) UIColor *borderColor; /** 边框宽度,默认为1.0 */ @property (nonatomic, assign) CGFloat borderWidth; /** 圆角半径,默认为5.0 */ @property (nonatomic, assign) CGFloat cornerRadius; /** 箭头高度,默认为8.0 */ @property (nonatomic, assign) CGFloat arrowHeight; /** 弹窗与屏幕边缘的最小间距,默认为10.0 */ @property (nonatomic, assign) CGFloat popoverMargin; @end NS_ASSUME_NONNULL_END