千家信息网

iOS如何实现全局悬浮按钮

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章给大家分享的是有关iOS如何实现全局悬浮按钮的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下现在有很多app都做这个全局按钮如上面两张图的效果,完成一个全
千家信息网最后更新 2026年11月04日iOS如何实现全局悬浮按钮

这篇文章给大家分享的是有关iOS如何实现全局悬浮按钮的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

具体内容如下

现在有很多app都做这个全局按钮

如上面两张图的效果,完成一个全局悬浮的按钮,而且不会划出屏幕外
既然是全局,那写在AppDelegate中
UIWindow是一种特殊的UIView,它相当于一块画框,而UIView相当于里面的画布。通常在一个app中只会有一个UIWindow。

AppDelegate.h

@interface AppDelegate : UIResponder @property (strong, nonatomic) UIWindow *window;@property (strong, nonatomic) UIButton *button;@end

AppDelegate.m

先button懒加载

- (UIButton*)button {    if (!_button) {        _button = [UIButton buttonWithType:UIButtonTypeCustom];        _button.frame = CGRectMake(258, 450, 60, 60);//初始在屏幕上的位置        [_button setImage:[UIImage imageNamed:@"bcl_btn_whole"] forState:UIControlStateNormal];    }    return _button;}

然后将其加在window上,设置手势

-(void)createButton{    if (!_button) {        _window = [[UIApplication sharedApplication] keyWindow];        _window.backgroundColor = [UIColor whiteColor];        [_window addSubview:self.button];        UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:                                       self action:@selector(locationChange:)];        pan.delaysTouchesBegan = YES;        [_button addGestureRecognizer:pan];    }}

这个呢是为了开机启动两秒后创建全局button

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    [self performSelector:@selector(createButton) withObject:nil afterDelay:2];}

最关键的就是设置button不要划出屏幕外
以下四个else if分别为屏幕的上下左右
设置一个标记值isOVer
如果超出屏幕范围,纠正回来

-(void)locationChange:(UIPanGestureRecognizer*)p{    CGFloat HEIGHT=_button.frame.size.height;    CGFloat WIDTH=_button.frame.size.width;    BOOL isOver = NO;    CGPoint panPoint = [p locationInView:[UIApplication sharedApplication].windows[0]];    CGRect frame = CGRectMake(panPoint.x, panPoint.y, HEIGHT, WIDTH);    NSLog(@"%f--panPoint.x-%f-panPoint.y-", panPoint.x, panPoint.y);    if(p.state == UIGestureRecognizerStateChanged){        _button.center = CGPointMake(panPoint.x, panPoint.y);    }    else if(p.state == UIGestureRecognizerStateEnded){        if (panPoint.x + WIDTH > KScreenWidth) {            frame.origin.x = KScreenWidth - WIDTH;            isOver = YES;        } else if (panPoint.y + HEIGHT > KScreenHeight) {            frame.origin.y = KScreenHeight - HEIGHT;            isOver = YES;        } else if(panPoint.x - WIDTH / 2< 0) {            frame.origin.x = 0;            isOver = YES;        } else if(panPoint.y - HEIGHT / 2 < 0) {            frame.origin.y = 0;            isOver = YES;        }        if (isOver) {            [UIView animateWithDuration:0.3 animations:^{                self.button.frame = frame;            }];        }

感谢各位的阅读!关于"iOS如何实现全局悬浮按钮"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

全局 屏幕 按钮 内容 更多 篇文章 不错 实用 特殊 上下左右 上下 位置 关键 就是 手势 效果 文章 标记 画布 画框 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司税收优惠 互联网最新的科技有限公司 科技互联网技术 合肥互联网科技公司 互联网与未来科技 腾讯科技 互联网女皇 互联网科技缩写 多迪互联网科技有限公司 互联网科技素材视频竖屏 山东吉时兔互联网科技有限公司 蓝色互联网科技 卫星互联网科技股票 互联网科技博主是什么意思 宁夏众和广鑫互联网科技有限公司 河南住房之家互联网科技 广东工业互联网大赛深圳学泰科技 互联网科技数字货币 半导体是互联网高科技吗 互联网科技收购价值 互联网科技大佬云集 小米移动互联网科技园 互联网科技的英文 云创客互联网科技公司 中国科技互联网公司收入 佳云科技和互联网广告 燊美集互联网科技有限公司 互联网金融科技公司的优势 梅州GM互联网络科技有限公司 科技互联网专业工作会议发言稿 东风日产互联网科技公司叫什么
0