iOS 花型菜单选择工具 FKFlowerMenu

2018-03-18  本文已影响0人  _铲屎官_
小姐姐镇楼.jpeg

这个也是来自于项目中的一个需求,点击一个按钮,可以像开花一样散开多个菜单选项栏,点击不同的菜单选项栏会响应不同的点击事件,需要配上散开/收起的动画效果。为了满足这个需求,封装了一个 FKFlowerMenu 花型菜单选择工具。

下载地址:github下载

FKFlowerMenuDemo运行结果.jpeg

支持功能

使用

FKFlowerMenuDemo是该工具的一个使用范例,如果需要将该工具使用到自己的工程中,只用把demo中到FKFloweMenu文件夹中的文件引入工程就可以了。
FKFloweMenu中包含FKFlowerMenuItemFKFloweMenu文件。
FKFlowerMenuItem文件是花型菜单工具展开之后的选择按钮项,选择按钮项支持自定义图片,大小,响应事件。
FKFloweMenu文件夹中FKFlowerMenuBtn文件就是花型菜单工具控制展开/收起的中心按钮,它属于UIButton类型,使用者只需要创建一个Button并继承于它,就可以轻松的使用这个花型菜单工具了。

设置FKFlowerMenuBtn各项属性

Button创建成功并继承FKFlowerMenuBtn,确定了中心按钮的位置,我们就完成了使用的第一步。
下面我们需要来设置中心按钮的各项属性。

/**散开的最大距离*/
@property (nonatomic , assign) CGFloat maxLength;
/**散开的最大角度*/
@property (nonatomic , assign) CGFloat maxRadian;
/**散开的方向*/
@property (nonatomic , assign) DirectionWay derectionWay;
/**是否需要旋转的动画效果*/
@property (nonatomic , assign) BOOL needAnimation;

maxLength用来控制展开的选项按钮距离中心按钮圆心的距离。
maxRadian用来控制花型菜单展开后,最外面的两个选项按钮所呈的最大角度。
needAnimation中心按钮是否需要旋转动画,目前旋转动画的动作并没有自定义,支持点击后顺时针45度旋转(展开动画)/逆时针45度旋转(收起动画)。如果不需要的朋友可以直接忽略这个属性,或者设置为NO

derectionWay用来控制菜单按钮的展开方向,目前支持4个方向,使用者在确认中心按钮的位置后,可根据需要设置方向。由4个枚举变量来控制。

typedef NS_ENUM (NSInteger, DirectionWay) {
    OnTheTopLeft = 0,      //左上方向
    OnTheTopRight,         //右上方向
    OnTheBottomLeft,       //左下方向
    OnTheBottomRight,      //右上方向
};

添加菜单选项按钮

设置完中心按钮的各种属性之后,我们需要创建菜单选择按钮

- (id)initWithImage:(UIImage *)image withBounds:(CGFloat)bounds selectedBlock:(SelectedBlock)selectedBlock;

通过上面这个方法设置选择按钮的显示图片,大小,以及点击的响应事件。

将创建好的选择按钮添加至数组,以数组的形式和中心按钮作关联。

/**设置散发出来的子item*/
- (void)addSubItems:(NSArray<FKFlowerMenuItem*>*)itemArr;

这是FKFlowerMenuBtn用来添加FKFlowerMenuItem的方法,添加成功的选择按钮会和中心按钮显示在一个视图层级上。

到这一步,中心按钮选择按钮的关联和设置就已经完成了,运行起我们的工程,就可以开心的使用花型菜单了。……^ _ ^

完整的设置过程

- (void)configureBtn {
    
    FKFlowerMenuItem *item0 = [[FKFlowerMenuItem alloc] initWithImage:[UIImage imageNamed:@"add_mytask_askr.png"] withBounds:30 selectedBlock:^{
        NSLog(@"第1个");
    }];
    
    FKFlowerMenuItem *item1 = [[FKFlowerMenuItem alloc] initWithImage:[UIImage imageNamed:@"Task_Addphoto_Btn.png"] withBounds:30 selectedBlock:^{
        NSLog(@"第2个");
    }];
    
    FKFlowerMenuItem *item2 = [[FKFlowerMenuItem alloc] initWithImage:[UIImage imageNamed:@"add_mytask_askr.png"] withBounds:30 selectedBlock:^{
        NSLog(@"第3个");
    }];
    
    self.leftFlowersBtn.maxLength = 75;
    self.leftFlowersBtn.maxRadian = M_PI_4 * 3 ;
    self.leftFlowersBtn.derectionWay = OnTheBottomRight;
    [self.leftFlowersBtn addSubItems:@[item0,item1,item2]];
}

本文主要讲解了FKFlowerMenu的使用方法,具体可以参考 github下载 地址中的Demo,也欢迎各位朋友留言指正,指点。

上一篇 下一篇

猜你喜欢

热点阅读