欢迎光临
我们一直在努力

iOS动态菜单(第二版-动态版),仿iPad的pop菜单(第二版)

建站超值云服务器,限时71元/月

iOS动态菜单(第二版-动态版),仿iPad的pop菜单(第二版)

项目介绍:

PopMenuTableView

https://github.com/KongPro/PopMenuTableView

Easy to use this menu,that like iPad.

KKPopMenu.gif

更新描述

  • 新增追加菜单项:在原有菜单基础上,增加一个或者多个菜单按钮。

  • 更新菜单项内容:在原有菜单基础上,更新所有的菜单项内容。(也可以局部更新)。

  • 同样都是类方法实现,不需要显示的创建对象。

  • 增加一个maxValueForItemCount属性,防止菜单选项无限增加,导致过长超出屏幕范围。(maxValueForItemCount默认值为6,即:菜单的最大长度等于6个单项的高度和,大于6个则需要滚动方式查看菜单项)。

  • 代码进行了进一步封装,避免重复代码冗余。

  • 使用方法依旧只需要传递内容数组,无需其他多余步骤,更精简、更独立。

  • (⚠️注:所有的方法都是类方法,直接用类名调用即可,_并留意文档最后的的参数说明_)

代码示例:

1. 类方法创建:

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

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

2. 展示

  • 方法名称:

    + (void)showMenuWithAnimation:(BOOL)isShow;
  • 说明:
      自带动画缩放效果的pop展示,参数isSHow控制展示或不展示,(也可以通过hidden方法来控制隐藏,后续有说明)

  • 方法调用:

    // self.flag : YES - 展示,NO - 不展示
    [MenuView showMenuWithAnimation:self.flag];  

3. 追加菜单项:

  • 方法名称:

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

  • 方法调用:

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

4. 更新菜单项:

  • 方法名称:

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

  • 方法调用:

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

5.隐藏和移除:

  • 方法名称:

       /* 隐藏菜单 */
       + (void)hidden;
    
       /* 移除菜单 */
       + (void)clearMenu;
  • 说明:

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

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

  • 方法调用:

       [MenuView hidden];  // 隐藏菜单
       [MenuView clearMenu];   // 移除菜单

参数描述:

  • fame: 菜单坐标和宽高 (非必填,取默认值)

  • target:菜单将要展示的所在控制器 (参数必填)

  • dataArray:菜单项内容 (必填参数)

  • itemsClickBlock:点击菜单的block回调,回调菜单文字和下标

  • backViewTap:半透明背景点击回调

  • (注:此菜单并非只能加在控制器的view上,有种特殊的需求就是,菜单背景图片的“小尖尖”要与navigationBar相交,此时target需要传递self.navigationController即可)

温馨提示:

  • demo中的target传递的是self.navigationController,frame参数的默认值也是相对navigationBar来取值。如果菜单要加在控制器的view上,则按需传递frame参数,位置可能需要细细调整,效果才最好。

https://github.com/KongPro/PopMenuTableView

code4app

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » iOS动态菜单(第二版-动态版),仿iPad的pop菜单(第二版)
分享到: 更多 (0)