GithubHelp home page GithubHelp logo

gikicoder / gmenucontroller Goto Github PK

View Code? Open in Web Editor NEW
146.0 9.0 38.0 6.38 MB

具有和UIMenuController一致的UI 与交互行为. menuItem可指定target. 可定制化UI.对外API与原生UIMenuController 一致.

License: MIT License

Objective-C 91.71% Ruby 7.22% C++ 1.08%

gmenucontroller's Introduction

GMenuController

License MIT  Support  CocoaPods 

介绍

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

特性

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

用法

基本用法

// GMenuController (和 UIMenuController 用法一致)
GMenuItem *item1 = [[GMenuItem alloc] initWithTitle:@"选择" target:self action:@selector(test)];
GMenuItem *item2 = [[GMenuItem alloc] initWithTitle:@"复制" target:self action:@selector(test)];
GMenuItem *item3 = [[GMenuItem alloc] initWithTitle:@"全选" target:self action:@selector(test)];
GMenuItem *item4= [[GMenuItem alloc] initWithTitle:@"收藏" target:self action:@selector(test)];
GMenuItem *item5 = [[GMenuItem alloc] initWithTitle:@"更多" target:self action:@selector(test)];
self.arr = @[item1,item2,item3,item4,item5];

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

other

///menuView弹出状态下.点击空白区域默认自动隐藏.如何不需要自动隐藏设置:
[GMenuController sharedMenuController].menuViewContainer.hasAutoHide = NO;
///更多menuView属性设置

/**
menuView 填充颜色 Defulat:[UIColor colorWithRed:26/255 green:26/288 blue:27/255 alpha:1]
*/
@property (nonatomic, strong) UIColor  *fillColor;

/**
menuView 圆角
*/
@property(nonatomic, assign) CGFloat cornerRadius;

/**
三角箭头的大小,defulat:CGSizeMake(17, 9.7) 系统menu箭头size
*/
@property(nonatomic, assign) CGSize arrowSize ;

/**
箭头指向
GMenuControllerArrow Default: 会自动计算合适的箭头方向
*/
@property(nonatomic, assign) GMenuControllerArrowDirection arrowDirection ;

/**
如果menuItem 有图片. 指定图片与文字的排列. Default:GAdjustButtonIMGPositionLeft
*/
@property (nonatomic, assign) GAdjustButtonIMGPosition  imagePosition;

/**
menuItemFont Default:14
*/
@property (nonatomic, strong) UIFont * menuItemFont;

/**
menuItemColor Default:whiteColor
*/
@property (nonatomic, strong) UIColor * menuItemTintColor;

/**
menuItemHighlightColor Default:lightGaryColor
*/
@property (nonatomic, strong) UIColor * menuItemHighlightColor;
/**
menu高度 Default:45.34f
*/
@property (nonatomic, assign) CGFloat  menuViewHeight;

/**
menu最大宽度
默认screenWidth
真实宽度需要减去menuEdgeInset
*/
@property (nonatomic, assign) CGFloat  maxMenuViewWidth;

/**
箭头与目标view的间隙
*/
@property(nonatomic, assign) CGFloat arrowMargin;

/**
menuView 与屏幕边缘的间隙
*/
@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

gmenucontroller's People

Contributors

cntrump avatar gikicoder avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gmenucontroller's Issues

性能问题

你这有很大的性能问题,我是在点击cell的时候初始换显示,滑动tableView的时候隐藏menu,界面就非常卡顿,CPU消耗在90%以上

Frame的位置不对

使用你的GMenuItem, 在聊天界面的tableviewcell 上面复制,粘贴, 发现位置不对, 使用系统的UIMenuItem没有问题, 不知道是什么原因。。

[[GMenuController sharedMenuController] setTargetRect:sender.frame inView:self.view]; 这个方法,我传的frame值是没有问题的, 但是在显示的时候位置不对。

在tableView上,位置错乱

在tableView上,位置错乱 如果centerPoint.y <0 ,centerPoint.y= 负值时候,就会出现在屏幕中间centerPoint.y = GMenuScreenHeight/2; (这里导致位置错乱)

支持横屏么

有个横屏的textfield需要用,原生的好像不支持横屏,你知道这个支持不?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.