国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS實現一個可以在屏幕中自由移動的按鈕

2020-07-26 02:46:06
字體:
來源:轉載
供稿:網友

本文主要給大家介紹了利用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.x<rightMargin&&centerPoint.x>leftMargin) {     _crossBtn.center = CGPointMake(beginPoint.x + offsetX, bottomMargin);    }   }   else if (centerPoint.y<topMargin)   {    if (centerPoint.x<rightMargin&&centerPoint.x>leftMargin) {     _crossBtn.center = CGPointMake(beginPoint.x + offsetX, topMargin);    }   }   else if (centerPoint.x>rightMargin)   {    _crossBtn.center = CGPointMake(rightMargin, beginPoint.y + offsetY);   }   else if (centerPoint.x<leftMargin)   {    _crossBtn.center = CGPointMake(leftMargin, beginPoint.y + offsetY);   }  } }else if (pan.state == UIGestureRecognizerStateEnded || pan.state == UIGestureRecognizerStateFailed){ }}@end

總結

以上就是這篇文章的全部內容了,希望本文的內容對各位iOS開發者們能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 盐池县| 桃园市| 桦南县| 贵港市| 岗巴县| 太湖县| 寿阳县| 武定县| 霸州市| 庆城县| 洞头县| 文成县| 当涂县| 隆昌县| 桃源县| 青浦区| 黄石市| 农安县| 甘肃省| 余干县| 太保市| 松滋市| 麦盖提县| 广州市| 廊坊市| 肇州县| 武鸣县| 明星| 曲阜市| 芒康县| 来宾市| 石门县| 沂水县| 漠河县| 通江县| 昭通市| 临颍县| 宁陵县| 含山县| 东港市| 玉环县|