美文网首页
仿微博,钉钉毛玻璃动画弹出菜单

仿微博,钉钉毛玻璃动画弹出菜单

作者: maretell | 来源:发表于2016-05-17 14:02 被阅读245次


自定义封装一个BlurEffectMenu

BlurEffectMenu.h

           @class BlurEffectMenu ,BlurEffectMenuItem;@protocol BlurEffectMenuDelegate//点击背景dismiss- (void)blurEffectMenuDidTapOnBackground:(BlurEffectMenu *)menu;//点击item- (void)blurEffectMenu:(BlurEffectMenu *)menu didTapOnItem:(BlurEffectMenuItem *)item;@end@interface BlurEffectMenuItem : NSObject@property (nonatomic,copy) NSString *title;//标题@property (nonatomic,strong) UIImage *icon;//图标@end@interface BlurEffectMenu : UIViewController@property(nonatomic,assign)iddelegate;

@property(nonatomic,copy)NSArray * menuItemArr;

//初始化

- (instancetype)initWithMenus:(NSArray *)menus;


BlurEffectMenu.m

    #import "BlurEffectMenu.h"

    @implementation BlurEffectMenuItem

@end

@interface BlurEffectMenu ()

@end

@implementation BlurEffectMenu

-(instancetype)initWithMenus:(NSArray *)menus{

self=[super init];

if(self){

self.menuItemArr=menus;

}

return self;

}

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view.

// self.view.backgroundColor=[UIColor lightGrayColor];

[self gesture];

[self setUpView];

}

-(void)gesture{

[self.view addGestureRecognizer:[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(didTapOnBackground)]];

UISwipeGestureRecognizer  * swipGesture=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(didTapOnBackground)];

[swipGesture setDirection:UISwipeGestureRecognizerDirectionUp];

[self.view addGestureRecognizer:swipGesture];

}

-(void)setUpView{

//毛玻璃

UIBlurEffect * blurEffect=[UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];

UIVisualEffectView * visual=[[UIVisualEffectView alloc]initWithEffect:blurEffect];

[visual setFrame:self.view.frame];

[self.view addSubview:visual];

//三列

NSInteger totalloc=3;

CGFloat appvieww=80;

CGFloat appviewh=80;

CGFloat margin=(self.view.frame.size.width-totalloc * appvieww)/(totalloc +1);

for(NSInteger i=0; i


ViewController.m

     #import "ViewController.h"#import "BlurEffectMenu.h"@interface ViewController ()@property(nonatomic,strong)UIButton * btn;

@end

#define kScreenWidth [UIScreen mainScreen].bounds.size.width

#define kScreenHeight [UIScreen mainScreen].bounds.size.height

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

[self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"关于@3x"]]];

[self.view addSubview:self.btn];

}

- (UIButton *)btn{

if (!_btn) {

_btn=[UIButton buttonWithType:UIButtonTypeCustom];

[_btn setFrame:CGRectMake(kScreenWidth/2-30.0, kScreenHeight-49.0-60.0, 60.0, 60.0)];

[_btn setTitle:@"点击" forState:UIControlStateNormal];

[_btn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];

[_btn.layer setBorderWidth:0.5];

[_btn.layer setBorderColor:[UIColor darkGrayColor].CGColor];

[_btn.layer setCornerRadius:30.0];

[_btn.layer setMasksToBounds:YES];

[_btn setBackgroundColor:[UIColor lightGrayColor]];

[_btn addTarget:self action:@selector(btnClicked) forControlEvents:UIControlEventTouchUpInside];

}

return _btn;

}

- (void)btnClicked{

BlurEffectMenuItem *addMattersItem=[[BlurEffectMenuItem alloc]init];

[addMattersItem setTitle:@"添加事项"];

[addMattersItem setIcon:[UIImage imageNamed:@"addMatters"]];

BlurEffectMenuItem *addSchedulesItem=[[BlurEffectMenuItem alloc]init];

[addSchedulesItem setTitle:@"添加日程"];

[addSchedulesItem setIcon:[UIImage imageNamed:@"addSchedule"]];

BlurEffectMenuItem *setupChatItem=[[BlurEffectMenuItem alloc]init];

[setupChatItem setTitle:@"发起会话"];

[setupChatItem setIcon:[UIImage imageNamed:@"setupChat"]];

BlurEffectMenuItem *searchContactsItem=[[BlurEffectMenuItem alloc]init];

[searchContactsItem setTitle:@"查找联系人"];

[searchContactsItem setIcon:[UIImage imageNamed:@"searchContacts"]];

BlurEffectMenu *menu=[[BlurEffectMenu alloc]initWithMenus:@[addMattersItem,addSchedulesItem,setupChatItem,searchContactsItem]];

[menu setDelegate:self];

menu.modalPresentationStyle = UIModalPresentationOverFullScreen;

[menu setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];

[self presentViewController:menu animated:YES completion:nil];

}

#pragma mark - BlurEffectMenu Delegate

- (void)blurEffectMenuDidTapOnBackground:(BlurEffectMenu *)menu{

[self dismissViewControllerAnimated:YES completion:nil];

}

    - (void)blurEffectMenu:(BlurEffectMenu *)menu didTapOnItem:(BlurEffectMenuItem *)item{

[self dismissViewControllerAnimated:YES completion:nil];

NSLog(@"item.title:%@",item.title);

}

相关文章

网友评论

      本文标题:仿微博,钉钉毛玻璃动画弹出菜单

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