美文网首页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