想制作一个按钮,类似于iPhone 的辅助touch的那个小白点的按钮。但是注意:千万不能也做成小白点,可能会导致审核被拒。

不明白网络上查到的那些,为什么会那么复杂,涉及到那么多的页面。其实只要在要出现这个按钮的控制器的.m文件里写几段代码就可以解决,非常轻便,尤其适合开发新手。

首先,在想放这个button的vc里,创建一个成员对象。

@property (nonatomic,strong)UIButton *spButton

然后就可以开始创建按钮了,我写成了一个方法:

        //创建可拖动、自动贴近边缘的 事件上报按钮[self initAddEventBtn];

方法的具体内容:

-(void)initAddEventBtn{UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(SCREEN_WIDTH-71,300,66,66)];[btn setImage:[UIImage imageNamed:@"shijianshangbao"]  forState:UIControlStateNormal];btn.backgroundColor = [UIColor colorWithWhite:0.88 alpha:0.8];btn.tag = 0;btn.layer.cornerRadius = 8;[self.view addSubview:btn];self.spButton = btn;[_spButton addTarget:self action:@selector(addEvent:) forControlEvents:UIControlEventTouchUpInside];//添加手势UIPanGestureRecognizer *panRcognize=[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanGesture:)];[panRcognize setMinimumNumberOfTouches:1];[panRcognize setEnabled:YES];[panRcognize delaysTouchesEnded];[panRcognize cancelsTouchesInView];[btn addGestureRecognizer:panRcognize];
}

醉关键的部分来了,实现按钮的移动事件处理:

- (void)handlePanGesture:(UIPanGestureRecognizer *)recognizer
{//移动状态UIGestureRecognizerState recState =  recognizer.state;switch (recState) {case UIGestureRecognizerStateBegan:break;case UIGestureRecognizerStateChanged:{CGPoint translation = [recognizer translationInView:self.navigationController.view];recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, recognizer.view.center.y + translation.y);}break;case UIGestureRecognizerStateEnded:{CGPoint stopPoint = CGPointMake(0, SCREEN_HEIGHT / 2.0);if (recognizer.view.center.x < SCREEN_WIDTH / 2.0) {if (recognizer.view.center.y <= SCREEN_HEIGHT/2.0) {//左上if (recognizer.view.center.x  >= recognizer.view.center.y) {stopPoint = CGPointMake(recognizer.view.center.x, self.spButton.width/2.0);}else{stopPoint = CGPointMake(self.spButton.width/2.0, recognizer.view.center.y);}}else{//左下if (recognizer.view.center.x  >= SCREEN_HEIGHT - recognizer.view.center.y) {stopPoint = CGPointMake(recognizer.view.center.x, SCREEN_HEIGHT - self.spButton.width/2.0);}else{stopPoint = CGPointMake(self.spButton.width/2.0, recognizer.view.center.y);
//                        stopPoint = CGPointMake(recognizer.view.center.x, SCREEN_HEIGHT - self.spButton.width/2.0);}}}else{if (recognizer.view.center.y <= SCREEN_HEIGHT/2.0) {//右上if (SCREEN_WIDTH - recognizer.view.center.x  >= recognizer.view.center.y) {stopPoint = CGPointMake(recognizer.view.center.x, self.spButton.width/2.0);}else{stopPoint = CGPointMake(SCREEN_WIDTH - self.spButton.width/2.0, recognizer.view.center.y);}}else{//右下if (SCREEN_WIDTH - recognizer.view.center.x  >= SCREEN_HEIGHT - recognizer.view.center.y) {stopPoint = CGPointMake(recognizer.view.center.x, SCREEN_HEIGHT - self.spButton.width/2.0);}else{stopPoint = CGPointMake(SCREEN_WIDTH - self.spButton.width/2.0,recognizer.view.center.y);}}}//如果按钮超出屏幕边缘if (stopPoint.y + self.spButton.width+40>= SCREEN_HEIGHT) {stopPoint = CGPointMake(stopPoint.x, SCREEN_HEIGHT - self.spButton.width/2.0-49);NSLog(@"超出屏幕下方了!!"); //这里注意iphoneX的适配。。X的SCREEN高度算法有变化。}if (stopPoint.x - self.spButton.width/2.0 <= 0) {stopPoint = CGPointMake(self.spButton.width/2.0, stopPoint.y);}if (stopPoint.x + self.spButton.width/2.0 >= SCREEN_WIDTH) {stopPoint = CGPointMake(SCREEN_WIDTH - self.spButton.width/2.0, stopPoint.y);}if (stopPoint.y - self.spButton.width/2.0 <= 0) {stopPoint = CGPointMake(stopPoint.x, self.spButton.width/2.0);}[UIView animateWithDuration:0.5 animations:^{recognizer.view.center = stopPoint;}];}break;default:break;}[recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
}

至此就大功告成啦。里面的一些方法、图片名称,自行替换成你需要的。

iOS悬浮、可拖动、自动吸附屏幕边缘的按钮制作相关推荐

  1. iOS 页面悬浮按钮 可拖动、自动吸附屏幕边缘 (OC)

    上效果图 1.主要思路:首页建立一个悬浮Button给他加上移动手势(UIPanGestureRecognizer) 然后改变center传递给弹出页面: 2.代码 .1初始化button self. ...

  2. 悬浮View,可拖动,放手后自动吸附到屏幕边上。

    悬浮View,应用内悬浮 本章给大家介绍自定义悬浮View,可随手指拖动,手指放开后会自动吸附到手机屏边缘,悬浮View内的Content布局可以任意放入自定义的布局,非常方便. 效果图: 核心部分是 ...

  3. iOS 悬浮球效果实现,悬浮按钮,拖拽,贴边,隐藏,显示,旋转屏幕适配

    1.悬浮球与设备刘海的安全距离 无论是横屏还是竖屏,悬浮球距离有刘海的一边会留出安全距离 设备方向的上下两边,也有安全距离 2.贴边吸附方向和距离 悬浮球只能贴设备方向的左右两边,需要贴上下两边自行调 ...

  4. 高仿苹果虚拟home键,手势拖动,放手会弹到屏幕边缘。

    在最近的项目开发过程中,产品提出了一个需求,就是要求在屏幕上面有一个悬浮按钮,然后手势可以拖动,在手抬起的时候会回到屏幕边缘,类似于苹果的虚拟home键. 不多说了,直接上代码了,代码里面会有注释,可 ...

  5. QQ在屏幕边缘自动隐藏不能正常显示

    新安装的Win7系统,设置QQ在屏幕边缘自动隐藏,但是鼠标移到其附近时,窗口没有完全弹出,有时只显示一半,后来找到了解决办法 右击桌面-屏幕分辨率-高级设置-屏幕显示-取消勾选"启用自动滚屏 ...

  6. android仿苹果悬浮窗(自动停靠、随手指滑动、返回主屏幕)

    说明:本人写博客一来是为了方便日后查看项目,二来是希望能够和广大的程序猿相互交流学习,文章布局简单,如有嫌弃,请绕行,如有错误,请指出,谢谢. 实验环境:安卓6.0 魅族手机 悬浮窗主要有以下几个功能 ...

  7. android仿苹果悬浮窗,Android仿IOS悬浮拖动按钮

    拖动效果 开发是我们有时候需要一些快捷通道,类似ios系统的拖动方块. Android6.0及其以上版本手机使用悬浮窗功能会正常使用,在23及以上版本下编译,悬浮窗权限默认是关闭没有权限,然在23以下 ...

  8. Unity悬浮球自动吸附靠边

    画面中悬浮球可任意拖拽,拖拽结束后会靠在最近的屏幕边缘,会适应各种分辨率的情况. 利用锚点设置,工程代码见下载链接:https://download.csdn.net/download/piaoyun ...

  9. iOS手动旋转屏幕、自动旋转屏幕

    有的时候,在iOS下需要实现手动旋转屏幕与自动旋转屏幕的自由切换.比如,在手机竖屏时希望点击按钮使页面横屏,然后当手机屏幕方向发生变化时,页面能正常的契合手机旋转的方向. 1.视图方向旋转:通过vie ...

  10. iOS实现浮动泡泡功能,悬浮泡泡,windows系统屏幕保护程序的气泡功能(碰撞检测)

    使用到的知识点有 1.block封装NSTimer 2.随机生成0-X之间的正数 3.两个frame是否有交集:CGRectIntersectsRect 4.随机生成-1~1之间的浮点数 5.CGPo ...

最新文章

  1. 戏说Linux商用数据库
  2. 公司-弹出页回调之后加载页面
  3. 第 5 章 Nova - 030 - Launch和Shut Off操作详解
  4. WCF异常:HTTP 无法注册,另一应用程序正在使用 TCP 端口 80
  5. 横流式冷却塔计算风量_冷却塔空气动力是怎么计算的?
  6. hadoop设置ssh免密码登录
  7. 编程算法 - 篱笆修理(Fence Repair) 代码(C)
  8. 斯坦福2019秋季课程:图机器学习资料全公开
  9. easyexcel导入时读不到数据_easyexcel读取任意表格以及使用中的坑
  10. 50道编程小题目之【反弹的球】
  11. Algorithm:贪心策略之区间选点问题
  12. ngingx安装错误 ./configure: error: the HTTP rewrite module requires the PCRE library.
  13. 分享我用cnode社区api做微信小应用的入门过程
  14. 9008刷机教程oppo_手机黑砖9006/9008救砖教程 通用救砖模式刷机修复方法
  15. 锁住文件linux,关于Linux文件锁定保护命令chattr
  16. android 设置ios 字体大小设置,iPhone11字体大小怎么调?苹果手机调节字体大小的三种方法...
  17. 怎么让照片里的人嘴巴动起来_让照片动起来软件下载-让照片动起来制作软件下载-西西软件下载...
  18. 【机器学习】【Apriori算法-1】Apriori算法原理详解 + 示例展示数学求解过程
  19. [译]无迹卡尔曼滤波教程
  20. Windows打开软件老是弹出无法验证发布者

热门文章

  1. Spring注解注入原理
  2. android串口wifi模块,一文深度了解串口WiFi模块的应用场景
  3. Nginx跨域配置 proxy_pass
  4. 南京邮电大学《管理学原理C》2019/2020 学年第 2 学期期末试卷
  5. java string转gbk_Java String UTF-8 和 GBK 互换
  6. 建模实训报告总结_3d建模实习报告
  7. 安装zabbix步骤
  8. 一阶梯度法、二阶段梯度法、牛顿法
  9. 麦肯锡极简工作法-读书笔记
  10. 谈谈RJ45线序的打法及口诀