• Stars
    star
    247
  • Rank 164,117 (Top 4 %)
  • Language
    Objective-C
  • Created over 8 years ago
  • Updated almost 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Easy to use this menu,that like iPad

PopMenuTableView

Easy to use this menu,that like iPad.

尴尬:图片抽搐了,下载运行看吧...

动态菜单

更新描述

  • 自适应方向,自适应箭头指示位置。
  • 新增追加菜单项:在原有菜单基础上,增加一个或者多个菜单按钮。
  • 更新菜单项内容:在原有菜单基础上,更新所有的菜单项内容。(也可以局部更新)。
  • 同样都是类方法实现,不需要显示的创建对象。
  • ⚠️使用方法依旧只需要传递内容数组,无需其他多余步骤。
  • (⚠️注:所有的方法都是类方法,直接用类名调用即可,并留意文档最后的的参数说明)

代码示例:

1. 类方法创建:

  • 传递参数说明dataArray -- 由菜单文字内容及图片名称组成的**字典数组**

       __weak __typeof(&*self)weakSelf = self;
        /**
         *  创建menu
         */
        [CommonMenuView createMenuWithFrame : CGRectMake(x, y, width, height) 
                               target : self.navigationController 
                            dataArray : dataArray 
                      itemsClickBlock : ^(NSString *str, NSInteger tag) {  /* do something */  } 
                          backViewTap : ^{  /* 点击背景遮罩view后的block,可自定义事件 */  }];

2. 展示

  • 方法名称:

     + (void)showMenuAtPoint:(CGPoint)point;

* **说明:**  
  _根据菜单展示的位置,指示箭头默认适应点击坐标,高度超出屏幕,菜单自动翻转。_

* **调用示例:**  
```Objective-C
     // point,展示的坐标
     + (void)showMenuAtPoint:(CGPoint)point;

3. 追加菜单项:

  • 方法名称:

       [CommonMenuView showMenuAtPoint:point];
  • 说明:
    在原有菜单项个数基础上,**追加的菜单项(例如:原有菜单中有三项,需要增加第四,第五...项等),可以实现动态增加**菜单项`

  • 调用示例:

        //拼接字典数组,这里可以使用 
        NSDictionary *addDict = @{@"imageName" : @"icon_button_recall",
                                  @"itemName" : @"新增项"
                                  };
        NSArray *newItemArray = @[addDict];
    
        // 调用:参数newItemArray :追加的菜单项字典拼接成的数组
       [CommonMenuView appendMenuItemsWith:newItemArray];

4. 更新菜单项:

  • 方法名称:

       + (void)updateMenuItemsWith:(NSArray *)newItemsArray;
  • 说明:
    **更新修改所有菜单的内容,根据传入的字典数组**内容,动态更新菜单项,只需要传递数组即可,其他无需多虑`

  • 调用示例:

       - (IBAction)removeMenuItem:(id)sender {
           /**
            *  更新菜单: _dataArray是控制器中全局字典数组,存的是菜单项图标和功能名称
            */
           [CommonMenuView updateMenuItemsWith:_dataArray];
       }

5.隐藏和移除:

  • 方法名称:

       /* 隐藏菜单 */
       + (void)hidden;
    
       /* 移除菜单 */
       + (void)clearMenu;
  • 说明:
      1 .只要程序不退出,只要不执行**clearMenu方法,创建的菜单对象就一直在内存中。若有在其他控制器利用类方法调用并展示,一旦菜单项不同,请调用updateMenuItemsWith:**方法更新菜单项目。

  2 .隐藏:对菜单的size进行缩小,考虑到当控制器始终存在时,即用户**没有进行push,或者退出app的操作(pop的情况下面会提到)时,就没必要移除菜单,避免需要菜单时的反复创建,此时应调用hidden方法**

  3 .移除:从父试图remove掉,当用户进行**pop,或者退出app的操作(控制器已经被销毁,就没必要保留菜单并占用内存空间了)时,应当调用clearMenu**方法

  • 调用示例:
       [CommonMenuView hidden];  // 隐藏菜单
       [CommonMenuView clearMenu];   // 移除菜单

参数描述:

  • fame: 菜单坐标和宽高 (非必填,高度自适应,width默认120)
  • target:菜单将要展示的所在控制器 (参数必填)
  • dataArray:菜单项内容 (必填参数)
  • itemsClickBlock:点击菜单的block回调,回调菜单文字和下标
  • backViewTap:半透明背景点击回调

温馨提示:

  • demo在Nav展示时候,fram的origin是自己写死的,至今没有找到能获取nav上按钮所在point的方法,如果大神们有好方法,或者对这个demo有改进意见,请发邮件:[email protected],不胜感激~🙏🙏🙏