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

首頁(yè) > 系統(tǒng) > iOS > 正文

iOS實(shí)現(xiàn)一個(gè)可以在屏幕中自由移動(dòng)的按鈕

2019-10-21 18:45:39
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文主要給大家介紹了利用iOS實(shí)現(xiàn)一個(gè)可以在屏幕中自由移動(dòng)的按鈕的相關(guān)內(nèi)容,分享出來(lái)供大家參考學(xué)習(xí),下面話不多說(shuō),來(lái)一起看看詳細(xì)的介紹。

效果圖如下:

ios,可以移動(dòng)懸浮按鈕,可移動(dòng)的按鈕,按鈕移動(dòng)動(dòng)畫

其實(shí)實(shí)現(xiàn)很簡(jiǎn)單,只需要寫.m就可以了

示例代碼

#import "CrossBtnVC.h"
@interface CrossBtnVC (){ CGPoint beginPoint; CGFloat rightMargin; CGFloat leftMargin; CGFloat topMargin; CGFloat bottomMargin; CGMutablePathRef pathRef;}@property (nonatomic,strong) UIButton *crossBtn;//聊天移動(dòng)@end
@implementation CrossBtnVC
- (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; _crossBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [_crossBtn setImage:[UIImage imageNamed:@"移動(dòng)聊天"] 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 - 手勢(shì)- (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&¢erPoint.x>leftMargin) {     _crossBtn.center = CGPointMake(beginPoint.x + offsetX, bottomMargin);    }   }   else if (centerPoint.y<topMargin)   {    if (centerPoint.x<rightMargin&¢erPoint.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

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)各位iOS開發(fā)者們能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)VEVB武林網(wǎng)的支持。

 

注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到IOS開發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 白河县| 水城县| 兴义市| 同仁县| 巴林左旗| 清河县| 长武县| 五河县| 云林县| 汝南县| 锡林浩特市| 长葛市| 台州市| 海伦市| 福州市| 新民市| 容城县| 城步| 资溪县| 北京市| 新乡县| 呼图壁县| 凤山市| SHOW| 朝阳县| 洞口县| 刚察县| 岳普湖县| 如皋市| 东至县| 兰溪市| 四子王旗| 鹿邑县| 彰武县| 新营市| 玉环县| 泗阳县| 嘉荫县| 广饶县| 旺苍县| 渝北区|