iOS如何实现应用悬浮窗效果
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章将为大家详细讲解有关iOS如何实现应用悬浮窗效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。需求在一个app应用的最顶部添加一个悬浮窗,就像ios系统As
千家信息网最后更新 2025年01月19日iOS如何实现应用悬浮窗效果
这篇文章将为大家详细讲解有关iOS如何实现应用悬浮窗效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
需求
在一个app应用的最顶部添加一个悬浮窗,就像ios系统AssistiveTouch 可以左右滑动,但是最终会停在左边或右边。
实现思路
在应用的视图的最顶层添加一个UIWindow,用这个UIWindow 充当悬浮窗,给UIWindow添加移动的手势监听,让悬浮窗随着手指移动,释放的时候,让它以动画的方式靠边
代码
//悬浮窗测试//创建一个悬浮窗口mwindow = [[AssistiveTouch alloc]initWithFrame:CGRectMake(100, 200, 40, 40) imageName:@"1.png"];//ios9 window要设置rootview 不然崩溃UIViewController *controller = [[UIViewController alloc] init];mwindow.rootViewController = controller;//展示悬浮窗。。[self.window makeKeyAndVisible];
//添加移动的手势UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(locationChange:)]; pan.delaysTouchesBegan = YES; [self addGestureRecognizer:pan];
//改变位置-(void)locationChange:(UIPanGestureRecognizer*)p{ //[[UIApplication sharedApplication] keyWindow] CGPoint panPoint = [p locationInView:[[UIApplication sharedApplication] keyWindow]]; if(p.state == UIGestureRecognizerStateBegan) { [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(changeColor) object:nil]; _imageView.alpha = 0.8; } else if (p.state == UIGestureRecognizerStateEnded) { [self performSelector:@selector(changeColor) withObject:nil afterDelay:4.0]; } if(p.state == UIGestureRecognizerStateChanged) { self.center = CGPointMake(panPoint.x, panPoint.y); } else if(p.state == UIGestureRecognizerStateEnded) { if(panPoint.x <= kScreenWidth/2) { if(panPoint.y <= 40+HEIGHT/2 && panPoint.x >= 20+WIDTH/2) { [UIView animateWithDuration:0.2 animations:^{ self.center = CGPointMake(panPoint.x, HEIGHT/2); }]; } else if(panPoint.y >= kScreenHeight-HEIGHT/2-40 && panPoint.x >= 20+WIDTH/2) { [UIView animateWithDuration:0.2 animations:^{ self.center = CGPointMake(panPoint.x, kScreenHeight-HEIGHT/2); }]; } else if (panPoint.x < WIDTH/2+15 && panPoint.y > kScreenHeight-HEIGHT/2) { [UIView animateWithDuration:0.2 animations:^{ self.center = CGPointMake(WIDTH/2, kScreenHeight-HEIGHT/2); }]; } else { CGFloat pointy = panPoint.y < HEIGHT/2 ? HEIGHT/2 :panPoint.y; [UIView animateWithDuration:0.2 animations:^{ self.center = CGPointMake(WIDTH/2, pointy); }]; } } else if(panPoint.x > kScreenWidth/2) { if(panPoint.y <= 40+HEIGHT/2 && panPoint.x < kScreenWidth-WIDTH/2-20 ) { [UIView animateWithDuration:0.2 animations:^{ self.center = CGPointMake(panPoint.x, HEIGHT/2); }]; } else if(panPoint.y >= kScreenHeight-40-HEIGHT/2 && panPoint.x < kScreenWidth-WIDTH/2-20) { [UIView animateWithDuration:0.2 animations:^{ self.center = CGPointMake(panPoint.x, 480-HEIGHT/2); }]; } else if (panPoint.x > kScreenWidth-WIDTH/2-15 && panPoint.y < HEIGHT/2) { [UIView animateWithDuration:0.2 animations:^{ self.center = CGPointMake(kScreenWidth-WIDTH/2, HEIGHT/2); }]; } else { CGFloat pointy = panPoint.y > kScreenHeight-HEIGHT/2 ? kScreenHeight-HEIGHT/2 :panPoint.y; [UIView animateWithDuration:0.2 animations:^{ self.center = CGPointMake(320-WIDTH/2, pointy); }]; } } }}
关于"iOS如何实现应用悬浮窗效果"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
应用
篇文章
移动
效果
手势
更多
不错
实用
代码
位置
内容
动画
右边
思路
手指
文章
方式
时候
知识
系统
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
标准数据库文件打开的方式
厦门直播场控软件开发
打开数据库重新命名
陕西军工时间同步服务器
青岛鼎瑞软件开发有限公司
四年级网络安全
学java要会数据库
jquery下拉框数据库
苹果软件开发工具注册流程
liux 软件开发
荔枝微课的软件开发费是多少
每位软件开发者都绝对必知
服务器带内管理口
福建托普旺网络技术
我的世界被抛弃服务器推荐
600人的企业需要建数据库吗
网络安全志愿服务横幅
tcu软件开发工程师
数据库pythonupdate
南京全息投影多媒体软件开发
广东质量网络技术开发服务标准
免费域名服务器有哪些
企业网络安全解决方案论文代码
网络技术有限公司怎么会扣费
北京智慧门禁软件开发方案
旧网站数据库浏览器版本
天津市国资委网络安全
未来安全博士谈网络安全
黄山区购买软件开发技术哪家好
金山区咨询软件开发平台资质