国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 佛冈县| 辽宁省| 全南县| 佛教| 夏邑县| 南郑县| 绥德县| 肥东县| 偏关县| 宁陵县| 探索| 西林县| 清苑县| 吉林省| 元阳县| 读书| 杂多县| 东港市| 周宁县| 临清市| 兴城市| 什邡市| 九台市| 瓮安县| 奉化市| 琼海市| 建德市| 新巴尔虎左旗| 安福县| 华阴市| 甘谷县| 维西| 沂水县| 玛曲县| 洛川县| 上杭县| 贵州省| 万全县| 汉寿县| 中宁县| 疏附县|