iOS如何实现一个可以在屏幕中自由移动的按钮-创新互联

这篇文章主要为大家展示了“iOS如何实现一个可以在屏幕中自由移动的按钮”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“iOS如何实现一个可以在屏幕中自由移动的按钮”这篇文章吧。

创新互联公司电话联系:13518219792,为您提供成都网站建设网页设计及定制高端网站建设服务,创新互联公司网页制作领域10余年,包括成都围栏护栏等多个方面拥有丰富的网站营销经验,选择创新互联公司,为企业锦上添花!

效果图如下:

iOS如何实现一个可以在屏幕中自由移动的按钮

其实实现很简单,只需要写.m就可以了

示例代码

#import "CrossBtnVC.h"
@interface CrossBtnVC ()
{
 CGPoint beginPoint;
 CGFloat rightMargin;
 CGFloat leftMargin;
 CGFloat topMargin;
 CGFloat bottomMargin;
 CGMutablePathRef pathRef;
}
@property (nonatomic,strong) UIButton *crossBtn;//聊天移动
@end
@implementation CrossBtnVC
- (void)viewDidLoad {
 [super viewDidLoad];
 self.view.backgroundColor = [UIColor whiteColor];

 _crossBtn = [UIButton buttonWithType:UIButtonTypeCustom];
 [_crossBtn setImage:[UIImage imageNamed:@"移动聊天"] forState:UIControlStateNormal];
 _crossBtn.frame = CGRectMake(UI_View_Width-54*UI_Width_Scale, UI_View_Height-103, 40, 40);
 [self.view addSubview:_crossBtn];
 [_crossBtn addTarget:self action:@selector(btnAction:) forControlEvents:UIControlEventTouchUpInside];
 UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePan:)];
 [_crossBtn addGestureRecognizer:pan];

 rightMargin = [UIScreen mainScreen].bounds.size.width-30;
 leftMargin = 30;
 bottomMargin = [UIScreen mainScreen].bounds.size.height-30-50;
 topMargin = 30+64;

 pathRef=CGPathCreateMutable();
 CGPathMoveToPoint(pathRef, NULL, leftMargin, topMargin);
 CGPathAddLineToPoint(pathRef, NULL, rightMargin, topMargin);
 CGPathAddLineToPoint(pathRef, NULL, rightMargin, bottomMargin);
 CGPathAddLineToPoint(pathRef, NULL, leftMargin, bottomMargin);
 CGPathAddLineToPoint(pathRef, NULL, leftMargin, topMargin);
 CGPathCloseSubpath(pathRef);
}
#pragma mark - 事件
- (void)btnAction:(UIButton*)sender{

}
#pragma mark - 手势
- (void)handlePan:(UIPanGestureRecognizer *)pan
{
 if (pan.state == UIGestureRecognizerStateBegan) {

  beginPoint = [pan locationInView:self.view];
 }else if (pan.state == UIGestureRecognizerStateChanged){

  CGPoint nowPoint = [pan locationInView:self.view];

  float offsetX = nowPoint.x - beginPoint.x;
  float offsetY = nowPoint.y - beginPoint.y;
  CGPoint centerPoint = CGPointMake(beginPoint.x + offsetX, beginPoint.y + offsetY);

  if (CGPathContainsPoint(pathRef, NULL, centerPoint, NO))
  {
   _crossBtn.center = centerPoint;
  }else{
   if (centerPoint.y>bottomMargin)
   {
    if (centerPoint.xleftMargin) {
     _crossBtn.center = CGPointMake(beginPoint.x + offsetX, bottomMargin);
    }
   }
   else if (centerPoint.yleftMargin) {
     _crossBtn.center = CGPointMake(beginPoint.x + offsetX, topMargin);
    }
   }
   else if (centerPoint.x>rightMargin)
   {
    _crossBtn.center = CGPointMake(rightMargin, beginPoint.y + offsetY);
   }
   else if (centerPoint.x

以上是“iOS如何实现一个可以在屏幕中自由移动的按钮”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联网站建设公司行业资讯频道!

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


新闻标题:iOS如何实现一个可以在屏幕中自由移动的按钮-创新互联
路径分享:http://bzwzjz.com/article/egdde.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 重庆网站建设 网站制作公司 重庆外贸网站建设 手机网站制作设计 网站建设 成都网站建设 成都网站建设推广 网站建设改版 成都网站建设 网站制作 企业网站建设 网站建设推广 成都品牌网站建设 高端品牌网站建设 网站建设公司 手机网站建设 手机网站设计 成都网站建设 响应式网站设计方案 网站建设方案 移动网站建设 成都网站建设