亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

舉例講解iOS開發中拖動視圖的實現

2020-07-26 03:33:09
字體:
來源:轉載
供稿:網友

預備知識
iOS處理屏幕上的觸摸動作,主要涉及到以下幾個方法:

復制代碼 代碼如下:

touchesBegan:withEvent:          //觸摸屏幕的最開始被調用
touchesMoved:withEvent:         //移動過程中被調用
touchesEnded:withEvent:         //動作結束時被調用
touchesCancelled:WithEvent:


從方法的命名可以清晰的看出該方法何時被調用,最后一個比較特殊。touchesCancelled:WithEvent:在Cocoa Touch必須響應持續觸摸事件的系統中斷時調用。
我們只要重寫這些方法,來作我們想要作的事情就可以了。

如何實現拖動視圖?
1.設置userInteractionEnabled屬性為YES,允許用戶交互。
2.在觸摸動作開始時記錄起始點。
3.在移動過程中,計算當前位置坐標與起始點的差值,即偏移量,并且移動視圖中心點至偏移量大小的地方。
4.分別限制x坐標、與y坐標,保證用戶不可將視圖托出屏幕

備注:分別限制x坐標與y坐標的原因是,即使向右拖動不了了,仍需保證可以向下拖動。

其實,功能比較簡單,就是iOS手勢動畫中的拖動。來看一下基本的寫法:

1.注冊拖動動畫

復制代碼 代碼如下:

UIPanGestureRecognizer * panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self
                                                                                            action:@selector(doHandlePanAction:)];
    [self.vLight addGestureRecognizer:panGestureRecognizer];


注:vLight就是要加入拖動的View子類。

2.拖動處理函數

復制代碼 代碼如下:

- (void) doHandlePanAction:(UIPanGestureRecognizer *)paramSender{
   
    CGPoint point = [paramSender translationInView:self.view];
    NSLog(@"X:%f;Y:%f",point.x,point.y);
   
    paramSender.view.center = CGPointMake(paramSender.view.center.x + point.x, paramSender.view.center.y + point.y);
    [paramSender setTranslation:CGPointMake(0, 0) inView:self.view];
   

}


實現代碼
以子類化UIImageView為例

復制代碼 代碼如下:

#import <UIKit/UIKit.h> 
 
@interface GragView : UIImageView 

    CGPoint startPoint; 

@end 

#import "GragView.h" 
 
@implementation GragView 
 
- (id)initWithFrame:(CGRect)frame 

    self = [super initWithFrame:frame]; 
    if (self) { 
        // Initialization code 
        //允許用戶交互 
        self.userInteractionEnabled = YES; 
    } 
    return self; 

 
- (id)initWithImage:(UIImage *)image 

    self = [super initWithImage:image]; 
    if (self) { 
        //允許用戶交互 
        self.userInteractionEnabled = YES; 
    } 
    return self; 

 
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 

    //保存觸摸起始點位置 
    CGPoint point = [[touches anyObject] locationInView:self]; 
    startPoint = point; 
     
    //該view置于最前 
    [[self superview] bringSubviewToFront:self]; 

 
-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 

    //計算位移=當前位置-起始位置 
    CGPoint point = [[touches anyObject] locationInView:self]; 
    float dx = point.x - startPoint.x; 
    float dy = point.y - startPoint.y; 
     
    //計算移動后的view中心點 
    CGPoint newcenter = CGPointMake(self.center.x + dx, self.center.y + dy); 
     
     
    /* 限制用戶不可將視圖托出屏幕 */ 
    float halfx = CGRectGetMidX(self.bounds); 
    //x坐標左邊界 
    newcenter.x = MAX(halfx, newcenter.x); 
    //x坐標右邊界 
    newcenter.x = MIN(self.superview.bounds.size.width - halfx, newcenter.x); 
     
    //y坐標同理 
    float halfy = CGRectGetMidY(self.bounds); 
    newcenter.y = MAX(halfy, newcenter.y); 
    newcenter.y = MIN(self.superview.bounds.size.height - halfy, newcenter.y); 
     
    //移動view 
    self.center = newcenter; 

 
/* 
// Only override drawRect: if you perform custom drawing. 
// An empty implementation adversely affects performance during animation. 
- (void)drawRect:(CGRect)rect 

    // Drawing code 

*/ 
 
@end 


20151023105257759.gif (698×354)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品啪视频| 亚洲成人久久一区| 国产精品久久久久9999| 久久亚洲精品视频| 欧美大全免费观看电视剧大泉洋| 日韩成人小视频| 日韩中文字幕不卡视频| 国产精品久久久久久久久久久久久| 欧美日韩人人澡狠狠躁视频| 最新亚洲国产精品| 日韩美女激情视频| 夜夜嗨av色综合久久久综合网| 国产丝袜一区二区三区免费视频| 久久久国产精品x99av| 精品久久久久久久久久久| 日韩av免费在线看| 日本久久精品视频| 伦伦影院午夜日韩欧美限制| 成人综合网网址| 亚洲综合视频1区| 欧美亚洲另类视频| 在线观看精品国产视频| 91高清视频免费| 亚洲美女性视频| 国产精品一区二区三| 国语自产精品视频在线看抢先版图片| 久久视频中文字幕| 国产91在线高潮白浆在线观看| 一区二区三区四区视频| 在线看日韩av| 亚洲福利小视频| 亚洲精品一区中文字幕乱码| 欧美激情中文网| 亚洲偷欧美偷国内偷| 国产一区二区丝袜| 精品国模在线视频| 亚洲国产精品99久久| 国产精品www| 国产成人一区二区三区电影| 国内精品久久久久伊人av| 亚洲国产精品专区久久| 久久久国产91| 91欧美精品午夜性色福利在线| 97精品国产91久久久久久| 国产欧美日韩亚洲精品| 色阁综合伊人av| 久久免费视频在线观看| 成人av资源在线播放| 日本久久久久久久久久久| 日韩精品免费在线播放| 久久久精品美女| 亚洲综合中文字幕在线| 精品毛片三在线观看| 久久久精品在线观看| 成人免费淫片视频软件| 2020欧美日韩在线视频| 欧美大片va欧美在线播放| 日韩在线免费视频| 日韩电影免费观看中文字幕| 91免费精品国偷自产在线| 日韩精品中文字幕在线播放| 精品国产一区二区三区久久狼黑人| 日韩av观看网址| 国产美女被下药99| 国产69精品久久久久99| 亚洲少妇中文在线| 国产亚洲精品成人av久久ww| 久久香蕉频线观| 国产一区二区久久精品| 亚洲无线码在线一区观看| 日韩一区二区在线视频| 亚洲国产另类久久精品| 久久99精品久久久久久琪琪| 欧美视频在线免费| 国产精品自产拍在线观看中文| 亚洲欧美日韩精品久久奇米色影视| 国产精品久久久久久搜索| 国内精品小视频| 日韩视频永久免费观看| 亚洲视频免费一区| 国产精品国内视频| 久久精品国产亚洲精品| 97人人模人人爽人人喊中文字| 欧美国产日韩二区| 久久久久免费视频| 亚洲视频在线观看免费| 久久综合伊人77777| 国产精品美乳在线观看| 国产亚洲欧美日韩一区二区| 日韩av大片在线| 国产日韩欧美另类| 国产aⅴ夜夜欢一区二区三区| 久久久久久久久久久免费精品| 国产91在线播放九色快色| 中文字幕自拍vr一区二区三区| 亚洲国产精品专区久久| 91sao在线观看国产| 亚洲欧美日韩第一区| 操人视频在线观看欧美| 欧美视频免费在线| 亚洲免费视频观看| 91精品国产精品| 亚洲a区在线视频| 亚洲精品理论电影| 久久久精品网站| 97免费视频在线播放| 欧美精品日韩www.p站| 亚洲精品中文字| 在线播放日韩欧美| 亚洲天天在线日亚洲洲精| 日韩精品中文字幕有码专区| 日av在线播放中文不卡| 国内精品久久久久影院 日本资源| 亚洲精品视频中文字幕| 国产美女精品视频| 精品久久久久久久久中文字幕| 精品香蕉在线观看视频一| 亚洲精品久久在线| 成人精品一区二区三区| 久久夜色撩人精品| 欧美精品久久久久| 亚洲理论电影网| 尤物九九久久国产精品的分类| 久久亚洲精品成人| 日韩欧美在线观看| 福利一区福利二区微拍刺激| 欧美另类第一页| 国产精品成熟老女人| 中文字幕亚洲一区| 91中文精品字幕在线视频| 欧美wwwwww| 亚洲欧洲成视频免费观看| 色哟哟网站入口亚洲精品| 亚洲欧美在线第一页| 久久久久999| 国产视频自拍一区| 国产成人精品电影| 国产精品一区久久| 亚洲亚裔videos黑人hd| 91精品国产91久久久久久最新| 亚洲人成免费电影| 国产精品久久久久久久app| 欧美裸体视频网站| 国产偷亚洲偷欧美偷精品| 国产精品爱久久久久久久| 亚洲视频在线观看视频| 中文字幕日韩有码| 亚洲女人天堂av| 日韩亚洲国产中文字幕| 久久久之久亚州精品露出| 97成人精品视频在线观看| 91精品国产沙发| 欧美成人免费小视频| 麻豆乱码国产一区二区三区| 亚洲国产精品人久久电影| 精品毛片网大全| 日韩电影免费在线观看| 欧美wwwxxxx| 欧美午夜性色大片在线观看| 555www成人网| 69久久夜色精品国产69乱青草| 亚洲欧美激情一区| 欧美插天视频在线播放| 国产精品黄色影片导航在线观看|