项目作者: GIKICoder

项目描述 :
具有和UIMenuController一致的UI 与交互行为. menuItem可指定target. 可定制化UI.对外API与原生UIMenuController 一致.
高级语言: Objective-C
项目地址: git://github.com/GIKICoder/GMenuController.git
创建时间: 2017-10-11T11:43:37Z
项目社区:https://github.com/GIKICoder/GMenuController

开源协议:MIT License

下载


GMenuController

License MIT
Support
CocoaPods

介绍

具有和系统UIMenuController行为,交互一致的UI控件.相比UIMenuController.具有更加友好的使用方式.
(该项目是 GRichLabel 文本选择复制功能的组件之一)

特性

  • API与UIMenuController一致.
  • 支持MenuItem指定target.使用更加灵活
  • 支持显示图标加文字menu.图标可自定义位置
  • 支持更改menuview 外观设置
  • 无需对添加MenuController的控件 添加canBecomeFirstResponder等行为.
  • 相比UIMenuController. GMenuController具有更加简单,友好的使用方式.

用法

基本用法

  1. // GMenuController (和 UIMenuController 用法一致)
  2. GMenuItem *item1 = [[GMenuItem alloc] initWithTitle:@"选择" target:self action:@selector(test)];
  3. GMenuItem *item2 = [[GMenuItem alloc] initWithTitle:@"复制" target:self action:@selector(test)];
  4. GMenuItem *item3 = [[GMenuItem alloc] initWithTitle:@"全选" target:self action:@selector(test)];
  5. GMenuItem *item4= [[GMenuItem alloc] initWithTitle:@"收藏" target:self action:@selector(test)];
  6. GMenuItem *item5 = [[GMenuItem alloc] initWithTitle:@"更多" target:self action:@selector(test)];
  7. self.arr = @[item1,item2,item3,item4,item5];
  8. [[GMenuController sharedMenuController] setMenuItems:self.arr];
  9. [[GMenuController sharedMenuController] setTargetRect:sender.frame inView:self.view];
  10. [[GMenuController sharedMenuController] setMenuVisible:YES];
  1. ///带有图片的menuView. 可指定图片位置
  2. GMenuItem *item1 = [[GMenuItem alloc] initWithTitle:@"选择" image:[UIImage imageNamed:@"star"] target:self action:@selector(test)];
  3. GMenuItem *item2 = [[GMenuItem alloc] initWithTitle:@"复制" image:[UIImage imageNamed:@"star"] target:self action:@selector(test)];
  4. GMenuItem *item3 = [[GMenuItem alloc] initWithTitle:@"全选" image:[UIImage imageNamed:@"star"] target:self action:@selector(test)];
  5. GMenuItem *item4= [[GMenuItem alloc] initWithTitle:@"收藏" image:[UIImage imageNamed:@"star"] target:self action:@selector(test)];
  6. GMenuItem *item5 = [[GMenuItem alloc] initWithTitle:@"更多" image:[UIImage imageNamed:@"star"] target:self action:@selector(test)];
  7. GMenuItem *item6 = [[GMenuItem alloc] initWithTitle:@"可以有多个文字,行为与系统menuview完全一致" image:[UIImage imageNamed:@"star"] target:self action:@selector(test)];
  8. NSArray* arr1 = @[item1,item2,item3,item4,item5,item6];
  9. GMenuController.sharedMenuController.menuViewContainer.imagePosition = GAdjustButtonIMGPositionBottom;
  10. GMenuController.sharedMenuController.menuViewContainer.menuViewHeight = 65;
  11. [[GMenuController sharedMenuController] setMenuItems:arr1];
  12. [[GMenuController sharedMenuController] setTargetRect:sender.frame inView:self.view];
  13. [[GMenuController sharedMenuController] setMenuVisible:YES];

other

  1. ///menuView弹出状态下.点击空白区域默认自动隐藏.如何不需要自动隐藏设置:
  2. [GMenuController sharedMenuController].menuViewContainer.hasAutoHide = NO;
  1. ///更多menuView属性设置
  2. /**
  3. menuView 填充颜色 Defulat:[UIColor colorWithRed:26/255 green:26/288 blue:27/255 alpha:1]
  4. */
  5. @property (nonatomic, strong) UIColor *fillColor;
  6. /**
  7. menuView 圆角
  8. */
  9. @property(nonatomic, assign) CGFloat cornerRadius;
  10. /**
  11. 三角箭头的大小,defulat:CGSizeMake(17, 9.7) 系统menu箭头size
  12. */
  13. @property(nonatomic, assign) CGSize arrowSize ;
  14. /**
  15. 箭头指向
  16. GMenuControllerArrow Default: 会自动计算合适的箭头方向
  17. */
  18. @property(nonatomic, assign) GMenuControllerArrowDirection arrowDirection ;
  19. /**
  20. 如果menuItem 有图片. 指定图片与文字的排列. Default:GAdjustButtonIMGPositionLeft
  21. */
  22. @property (nonatomic, assign) GAdjustButtonIMGPosition imagePosition;
  23. /**
  24. menuItemFont Default:14
  25. */
  26. @property (nonatomic, strong) UIFont * menuItemFont;
  27. /**
  28. menuItemColor Default:whiteColor
  29. */
  30. @property (nonatomic, strong) UIColor * menuItemTintColor;
  31. /**
  32. menuItemHighlightColor Default:lightGaryColor
  33. */
  34. @property (nonatomic, strong) UIColor * menuItemHighlightColor;
  35. /**
  36. menu高度 Default:45.34f
  37. */
  38. @property (nonatomic, assign) CGFloat menuViewHeight;
  39. /**
  40. menu最大宽度
  41. 默认screenWidth
  42. 真实宽度需要减去menuEdgeInset
  43. */
  44. @property (nonatomic, assign) CGFloat maxMenuViewWidth;
  45. /**
  46. 箭头与目标view的间隙
  47. */
  48. @property(nonatomic, assign) CGFloat arrowMargin;
  49. /**
  50. menuView 与屏幕边缘的间隙
  51. */
  52. @property(nonatomic, assign) UIEdgeInsets menuEdgeInset;

安装

CocoaPods

  1. Update cocoapods to the latest version.
  2. Add pod 'GMenuController' to your Podfile.
  3. Run pod install or pod update.
  4. Import “GMenuController.h”

手动添加

  1. git clone https://github.com/GIKICoder/GMenuController.git
  2. 选择GMenuController文件夹.拖入项目中即可.

Demo

Demo