我在網上找了很久沒有找到一個懸浮按鈕,所以才決定自己做一個,效果還不錯。
github 下載demo:https://github.com/MartinLi841538513/MartinDemos (一切以demo為准)
集成大法:
一,首先引入MLFloatButton.h .m .xib 文件(在demo含)
二,在controller中集成成MLFloatButton
引入#import "MLFloatButton.h"
實現MLFloatButtonDelegate協議以及他的方法buttonTouchAction
然后通過loadFromNibWithFrame初始化floatButton(這里一定要在viewWillAppear實現,否則,popBack將會看不到效果)
prepareForSegue是跳轉到另外一個界面也要能夠顯示該floatButton(通常我們需要這么做),此時我們需要重新設置代理和父視圖。並在下一個controller的viewWillAppear實現addSubview,以及協議方法。
#import "FloatButtonViewController.h" #import "MLFloatButton.h" #import "SecondViewController.h" @interface FloatButtonViewController ()<MLFloatButtonDelegate> { MLFloatButton *floatButton; } @end @implementation FloatButtonViewController -(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; floatButton = [MLFloatButton loadFromNibWithFrame:CGRectMake(100, 100, 32, 32) addTarget:self InSuperView:self.view];//這里一定要在viewWillAppear實現,否則,popBack將會看不到效果 } #pragma mark - Navigation - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"FloatButtonPush"]) { SecondViewController *target = segue.destinationViewController; target.floatButton = floatButton; target.floatButton.floatButtonDelegate = (id)target; //重新設置代理controller } } #pragma MLFloatButtonDelegate -(void)buttonTouchAction{ NSLog(@"button action"); } @end
在SecondViewController.h
#import "MLFloatButton.h" @interface SecondViewController : UIViewController @property(nonatomic,strong)MLFloatButton *floatButton; @end
在SecondViewController.m
#import "SecondViewController.h" @interface SecondViewController ()<MLFloatButtonDelegate> @end @implementation SecondViewController -(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [self.floatButton showInFatherView:self.view]; } #pragma MLFloatButtonDelegate -(void)buttonTouchAction{ NSLog(@"SecondViewController floatButton touched"); } @end