YBPopupMenu.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. //
  2. // YBPopupMenu.h
  3. // YBPopupMenu
  4. //
  5. // Created by lyb on 2017/5/10.
  6. // Copyright © 2017年 lyb. All rights reserved.
  7. //
  8. #import <UIKit/UIKit.h>
  9. #import "YBPopupMenuPath.h"
  10. // 过期提醒
  11. #define YBDeprecated(instead) NS_DEPRECATED(2_0, 2_0, 2_0, 2_0, instead)
  12. typedef NS_ENUM(NSInteger , YBPopupMenuType) {
  13. YBPopupMenuTypeDefault = 0,
  14. YBPopupMenuTypeDark
  15. };
  16. /**
  17. 箭头方向优先级
  18. 当控件超出屏幕时会自动调整成反方向
  19. */
  20. typedef NS_ENUM(NSInteger , YBPopupMenuPriorityDirection) {
  21. YBPopupMenuPriorityDirectionTop = 0, //Default
  22. YBPopupMenuPriorityDirectionBottom,
  23. YBPopupMenuPriorityDirectionLeft,
  24. YBPopupMenuPriorityDirectionRight,
  25. YBPopupMenuPriorityDirectionNone //不自动调整
  26. };
  27. @class YBPopupMenu;
  28. @protocol YBPopupMenuDelegate <NSObject>
  29. @optional
  30. /**
  31. 点击事件回调
  32. */
  33. - (void)ybPopupMenuDidSelectedAtIndex:(NSInteger)index ybPopupMenu:(YBPopupMenu *)ybPopupMenu;
  34. - (void)ybPopupMenuBeganDismiss;
  35. - (void)ybPopupMenuDidDismiss;
  36. - (void)ybPopupMenuBeganShow;
  37. - (void)ybPopupMenuDidShow;
  38. @end
  39. @interface YBPopupMenu : UIView
  40. /**
  41. 圆角半径 Default is 5.0
  42. */
  43. @property (nonatomic, assign) CGFloat cornerRadius;
  44. /**
  45. 自定义圆角 Default is UIRectCornerAllCorners
  46. 当自动调整方向时corner会自动转换至镜像方向
  47. */
  48. @property (nonatomic, assign) UIRectCorner rectCorner;
  49. /**
  50. 是否显示阴影 Default is YES
  51. */
  52. @property (nonatomic, assign , getter=isShadowShowing) BOOL isShowShadow;
  53. /**
  54. 是否显示灰色覆盖层 Default is YES
  55. */
  56. @property (nonatomic, assign) BOOL showMaskView;
  57. /**
  58. 选择菜单项后消失 Default is YES
  59. */
  60. @property (nonatomic, assign) BOOL dismissOnSelected;
  61. /**
  62. 点击菜单外消失 Default is YES
  63. */
  64. @property (nonatomic, assign) BOOL dismissOnTouchOutside;
  65. /**
  66. 设置字体大小 Default is 15
  67. */
  68. @property (nonatomic, assign) CGFloat fontSize;
  69. /**
  70. 设置字体颜色 Default is [UIColor blackColor]
  71. */
  72. @property (nonatomic, strong) UIColor * textColor;
  73. /**
  74. 设置偏移距离 (>= 0) Default is 0.0
  75. */
  76. @property (nonatomic, assign) CGFloat offset;
  77. /**
  78. 边框宽度 Default is 0.0
  79. 设置边框需 > 0
  80. */
  81. @property (nonatomic, assign) CGFloat borderWidth;
  82. /**
  83. 边框颜色 Default is LightGrayColor
  84. borderWidth <= 0 无效
  85. */
  86. @property (nonatomic, strong) UIColor * borderColor;
  87. /**
  88. 箭头宽度 Default is 15
  89. */
  90. @property (nonatomic, assign) CGFloat arrowWidth;
  91. /**
  92. 箭头高度 Default is 10
  93. */
  94. @property (nonatomic, assign) CGFloat arrowHeight;
  95. /**
  96. 箭头位置 Default is center
  97. 只有箭头优先级是YBPopupMenuPriorityDirectionLeft/YBPopupMenuPriorityDirectionRight/YBPopupMenuPriorityDirectionNone时需要设置
  98. */
  99. @property (nonatomic, assign) CGFloat arrowPosition;
  100. /**
  101. 箭头方向 Default is YBPopupMenuArrowDirectionTop
  102. */
  103. @property (nonatomic, assign) YBPopupMenuArrowDirection arrowDirection;
  104. /**
  105. 箭头优先方向 Default is YBPopupMenuPriorityDirectionTop
  106. 当控件超出屏幕时会自动调整箭头位置
  107. */
  108. @property (nonatomic, assign) YBPopupMenuPriorityDirection priorityDirection;
  109. /**
  110. 可见的最大行数 Default is 5;
  111. */
  112. @property (nonatomic, assign) NSInteger maxVisibleCount;
  113. /**
  114. menu背景色 Default is WhiteColor
  115. */
  116. @property (nonatomic, strong) UIColor * backColor;
  117. /**
  118. item的高度 Default is 44;
  119. */
  120. @property (nonatomic, assign) CGFloat itemHeight;
  121. /**
  122. 设置显示模式 Default is YBPopupMenuTypeDefault
  123. */
  124. @property (nonatomic, assign) YBPopupMenuType type;
  125. /**
  126. 代理
  127. */
  128. @property (nonatomic, weak) id <YBPopupMenuDelegate> delegate;
  129. /**
  130. 在指定位置弹出
  131. @param titles 标题数组 数组里是NSString/NSAttributedString
  132. @param icons 图标数组 数组里是NSString/UIImage
  133. @param itemWidth 菜单宽度
  134. @param delegate 代理
  135. */
  136. + (YBPopupMenu *)showAtPoint:(CGPoint)point
  137. titles:(NSArray *)titles
  138. icons:(NSArray *)icons
  139. menuWidth:(CGFloat)itemWidth
  140. delegate:(id<YBPopupMenuDelegate>)delegate;
  141. /**
  142. 在指定位置弹出(推荐方法)
  143. @param point 弹出的位置
  144. @param titles 标题数组 数组里是NSString/NSAttributedString
  145. @param icons 图标数组 数组里是NSString/UIImage
  146. @param itemWidth 菜单宽度
  147. @param otherSetting 其他设置
  148. */
  149. + (YBPopupMenu *)showAtPoint:(CGPoint)point
  150. titles:(NSArray *)titles
  151. icons:(NSArray *)icons
  152. menuWidth:(CGFloat)itemWidth
  153. otherSettings:(void (^) (YBPopupMenu * popupMenu))otherSetting;
  154. /**
  155. 依赖指定view弹出
  156. @param titles 标题数组 数组里是NSString/NSAttributedString
  157. @param icons 图标数组 数组里是NSString/UIImage
  158. @param itemWidth 菜单宽度
  159. @param delegate 代理
  160. */
  161. + (YBPopupMenu *)showRelyOnView:(UIView *)view
  162. titles:(NSArray *)titles
  163. icons:(NSArray *)icons
  164. menuWidth:(CGFloat)itemWidth
  165. delegate:(id<YBPopupMenuDelegate>)delegate;
  166. /**
  167. 依赖指定view弹出(推荐方法)
  168. @param titles 标题数组 数组里是NSString/NSAttributedString
  169. @param icons 图标数组 数组里是NSString/UIImage
  170. @param itemWidth 菜单宽度
  171. @param otherSetting 其他设置
  172. */
  173. + (YBPopupMenu *)showRelyOnView:(UIView *)view
  174. titles:(NSArray *)titles
  175. icons:(NSArray *)icons
  176. menuWidth:(CGFloat)itemWidth
  177. otherSettings:(void (^) (YBPopupMenu * popupMenu))otherSetting;
  178. /**
  179. 消失
  180. */
  181. - (void)dismiss;
  182. @end