美文网首页demo小知识点好东西
iOS仿微信、支付宝首页下拉菜单选择视图

iOS仿微信、支付宝首页下拉菜单选择视图

作者: 小小提莫酱 | 来源:发表于2017-09-02 22:26 被阅读3359次
    心之所向.jpg

    效果图展示、自动优化位置(上拉、下拉、左偏、右偏)

    ZWPullMenuView.gif

    下拉菜单组件化封装的需求

    项目开发初期、需求并不明确、没有统一的下拉菜单样式。多人协作开发、封装了多个组件模板且没有与具体业务隔离。下拉菜单位置不定,导致需要左偏、右偏、下拉、上拉多种显示模式出现。

    • 显示模式多样性、类似微信、支付宝首页下拉更多菜单页面。除此之外,允许根据参数自定义样式。
    • 调用方式简单方便、支持多样式调用方法。自动判断文字、图标文字等显示内容模板。
    • 自动优化显示区域、根据入参锚点、自动判断偏移半区、自动计算上拉/下拉显示模式。支持TableViewCell中滚动点击显示位置依赖不偏移。

    ZWPullMenuView自动优化位置显示、箭头指向

    • ZWPullMenuView初始化仅提供anchorView或者anchorPoint参数来确定PullMenu的箭头指向位置。
    • 上半区:箭头指示点所属上半区、PullMenuView下拉菜单显示。
    • 下半区:箭头指示点所属下半区、PullMenuView上拉菜单显示。
    • 左半区:箭头指示点所属左半区、PullMenuView右偏移、自动规避围栏越界。
    • 右半区:箭头指示点所属右半区、PullMenuView左偏移、自动规避围栏越界。

    ZWPullMenuView初始化方法

    • 根据点击事件视图anchorView自动计算最优的菜单显示位置。推荐初始化方法
      • anchorView:箭头指向视图、一般以点击按钮视图作为参数。
      • titleArray:文字显示数组。
      • imageArray:icon图标name数组、仅支持本地图片。
      • menuArray:ZWPullMenuModel图文数组Model。
    /**
     *  anchorView:下拉依赖视图[推荐初始化]
     *  箭头指向依赖视图
     *  titleArray:文字
     *  imageArray:icon
     *  menuArray:图文Model
     */
    + (instancetype)pullMenuAnchorView:(UIView *)anchorView;
    + (instancetype)pullMenuAnchorView:(UIView *)anchorView titleArray:(NSArray *)titleArray;
    + (instancetype)pullMenuAnchorView:(UIView *)anchorView titleArray:(NSArray *)titleArray imageArray:(NSArray *)imageArray;
    + (instancetype)pullMenuAnchorView:(UIView *)anchorView menuArray:(NSArray<ZWPullMenuModel *> *)menuArray;
    
    • 根据自定义箭头依赖点anchorPoint初始化、自动计算最优菜单显示位置。
      • anchorPoint:自定义箭头依赖点位置。
      • titleArray:文字显示数组。
      • imageArray:icon图标name数组、仅支持本地图片。
      • menuArray:ZWPullMenuModel图文数组Model。
    /**
     *  anchorView:下拉依赖绝对坐标
     *  指定坐标下拉
     *  箭头指向点
     *  titleArray:文字
     *  imageArray:icon
     *  menuArray:图文Model
     */
    + (instancetype)pullMenuAnchorPoint:(CGPoint)anchorPoint;
    + (instancetype)pullMenuAnchorPoint:(CGPoint)anchorPoint titleArray:(NSArray *)titleArray;
    + (instancetype)pullMenuAnchorPoint:(CGPoint)anchorPoint titleArray:(NSArray *)titleArray imageArray:(NSArray *)imageArray;
    + (instancetype)pullMenuAnchorPoint:(CGPoint)anchorPoint menuArray:(NSArray<ZWPullMenuModel *> *)menuArray;
    

    ZWPullMenuView自定义参数设置

    • 核心参数zwPullMenuStyle设置
    typedef NS_ENUM(NSInteger, ZWPullMenuStyle) {
        PullMenuDarkStyle = 0,  //类微信、黑底白字
        PullMenuLightStyle      //类支付宝、白底黑字
    };
    
    /** 
     *  pullMenu样式
     */
    @property (nonatomic, assign) ZWPullMenuStyle zwPullMenuStyle;
    
    • 其他参数自定义样式
      • coverBgColor :自定义蒙层视图背景色。
      • menuBgColor :自定义Menu视图背景色。
      • menuCellHeight :自定义Menu行高。
      • triangleHeight :自定义指示小箭头高度。
      • menuMaxHeight : 自定义Menu最大展示高度。

    Menu点击事件

    • Block实现点击事件、参数menuRow
    /**
     *  click
     */
    @property (nonatomic, copy) BlockSelectedMenu blockSelectedMenu;
    
    selected.png

    ZWPullMenuView调用方法

    基本用法.png

    如何使用SDK

    强烈建议您使用pod导入,节省导入依赖的时间。

    • 使用cocoaPods导入(搜索不到请更新本地仓库)
    pod 'ZWPullMenuView'
    
    • 直接将文件ZWPullMenuView拖入工程中
    #import "ZWPullMenuView.h"
    

    源码

    源码放在GitHub上,欢迎指正,记得star哦!

    相关文章

      网友评论

      • STF_ZHANG:tableview高度的问题
      • STF_ZHANG:数量太多的时候下面的上拉显示不出来
        小小提莫酱:@STF_ZHANG 问题已解决并更新GitHub,需要的话可以去更新一下。:smile:
        STF_ZHANG:@不吃鱼的提莫酱 我暂时在高度那里判断了一下:joy:
        小小提莫酱:稍等会更新版本、修复此问题,添加高度控制。
      • shLuckySeven:您好,我使用您这个东西,在nav上添加按钮,然后调用,崩溃
        小小提莫酱:如果添加qq不方便可以加入我新创建的群:662481568
        小小提莫酱:我这边没问题、读取按钮是为了读取并计算最佳位置。应该与导航栏无关。我私信你qq看一下问题
      • 8e3e46126358:怎么加在导航栏按钮上啊
        小小提莫酱:和普通按钮一样,anchorView指向定义的导航栏按钮就可以了
      • Niner小柯基:看到了clearlove7:joy: 厂长惊呆
        小小提莫酱:与时俱进、下个版本改一个clearlove X:joy:
      • SharaYuki:mark,以防以后需要!感谢po主分享!
      • ame017:mark一下 感觉这个是需要的

      本文标题:iOS仿微信、支付宝首页下拉菜单选择视图

      本文链接:https://www.haomeiwen.com/subject/ushrjxtx.html