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

首頁 > 學院 > 開發設計 > 正文

捏合圖片放大縮小與移動

2019-11-14 18:11:14
字體:
來源:轉載
供稿:網友

最近在做自定義地圖的放大縮小與移動,雖然實現了主要功能,但是在細節上還是有很多缺陷瑕疵,在這里將代碼和思路分享一下,希望能夠拋磚引玉,得到高人指點.

實現圖片的放大與縮小,我的思路是先通過兩個觸摸點距離的變化,判斷是放大還是縮小,然后再把地圖圖片按比例放大縮小.

地圖的移動,先記錄觸摸開始時的位置和觸摸移動的位置,計算兩者之間的差,再相應更改地圖圖片的位置.兩個記錄點不斷更新,所以圖片位置也隨著手指的變動不斷移動.

 

基本思路介紹完了,以下是代碼.

1.因為圖片是全屏的,同時還要考慮不同尺寸的屏幕,所以宏定義imageView的大小(屏幕的大小)

#define SCREENHEIGHT [[UIScreen mainScreen] bounds].size.height
#define SCREENWIDTH [[UIScreen mainScreen] bounds].size.width

 

2.在xib文件中放入一個imageView,大小為全屏,設置約束,并關聯.h文件

觸摸點進行比較時需要至少兩個比較對象,所以在.h中需要聲明

double lastdistance;//在捏合手勢中用來記錄上一次兩點之間距離

@PRoperty(nonatomic,assign)CGPoint lastPoint;//移動時記錄上一次位置

 

3.允許當前view執行觸摸事件

self.view.multipleTouchEnabled=YES;

 

在寫的時候我將圖片的放大縮小移動寫在了一起,但是為了方便理解,在這里我將他們按功能分開

4.圖片放大縮小

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{    if (touches.count==2) {        NSArray *touchArray=[touches allObjects];        UITouch *firstTouch=[touchArray objectAtIndex:0];        UITouch *secondTouch=[touchArray objectAtIndex:1];        CGPoint point1=[firstTouch locationInView:self.view];        CGPoint point2=[secondTouch locationInView:self.view];        //計算兩點距離[(x1-x2)^2+(y1-y2)^2]開方        double distance=[self distance:point1 point:point2];        //在手指剛觸摸屏幕時給last distance賦值,防止在手指捏合時因為last distance為空,造成第一次相減差太大,圖片放大比例太高       lastdistance=distance;    }} -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {    if (touches.count==2) { NSArray *touchArray=[touches allObjects]; UITouch *firstTouch=[touchArray objectAtIndex:0]; UITouch *secondTouch=[touchArray objectAtIndex:1]; CGPoint point1=[firstTouch locationInView:self.view]; CGPoint point2=[secondTouch locationInView:self.view]; double distance=[self distance:point1 point:point2]; if(distance-lastdistance>0) {     int a=distance-lastdistance;//計算放大倍數     float times=1+a*0.005;     CGSize bigSize=CGSizeMake(self.image.frame.size.width*times, self.image.frame.size.height*times);     [self bigImageWithImage:self.image Size:bigSize]; } else {     int a=lastdistance-distance;     float times=1-a*0.005;     CGSize smallSize=CGSizeMake(self.image.frame.size.width*times, self.image.frame.size.height*times);     [self smallImageWithImage:self.image Size:smallSize]; } lastdistance=distance; } } -(double)distance:(CGPoint)p1 point:(CGPoint)p2 { double distance=sqrt(pow(p1.x-p2.x,2)+pow(p1.y-p2.y,2)); return distance; }//放大圖片-(void)bigImageWithImage:(UIImageView *)image Size:(CGSize)size{    self.image.center=self.view.center;    self.image.bounds=CGRectMake(0, 0, size.width, size.height);}//縮小圖片-(void)smallImageWithImage:(UIImageView *)image Size:(CGSize)size{    UIImageView *moveImage=image;    if (size.height<=SCREENHEIGHT&&size.width<=SCREENWIDTH) {        moveImage.center=self.view.center;        moveImage.bounds=CGRectMake(0, 0, SCREENWIDTH, SCREENHEIGHT);    }    else    {    self.image.center=self.view.center;    self.image.bounds=CGRectMake(0, 0, size.width, size.height);    }}

圖片移動

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{    if (touches.count==1) {        UITouch *touch=[touches anyObject];        self.lastPoint=[touch locationInView:self.view];    }} -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {     if (touches.count==1) {         UITouch *touch=[touches anyObject];         CGPoint movePoint=[touch locationInView:self.view];         [self moveImage:movePoint];     } }//移動圖片-(void)moveImage:(CGPoint)movePoint{    float x = movePoint.x - self.lastPoint.x;    float y = movePoint.y - self.lastPoint.y;        float newX = self.image.frame.origin.x + x;    float newY = self.image.frame.origin.y + y;    //判斷,防止圖片越界    if (newX > 0) {        newX = 0;    }    if (newX < SCREENWIDTH-self.image.frame.size.width) {        newX = SCREENWIDTH-self.image.frame.size.width;    }    if (newY > 0) {        newY = 0;    }    if (newY < SCREENHEIGHT-self.image.frame.size.height) {        newY = SCREENHEIGHT-self.image.frame.size.height;    }    self.image.frame = CGRectMake(newX, newY, self.image.frame.size.width, self.image.frame.size.height);    self.lastPoint = movePoint;}

 

功能實現最大的缺陷是每次放大圖片的中心會重新定位到屏幕中心,在那里捏合就在那里放大.如果有更好地方法請告訴我.

 

下面是效果演示:

圖片放大與移動:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产视频欧美视频| 色悠久久久久综合先锋影音下载| 色婷婷综合成人| www.美女亚洲精品| 宅男66日本亚洲欧美视频| 热久久视久久精品18亚洲精品| 国产精品一区二区久久久久| 91亚洲精华国产精华| 国产精品国产三级国产专播精品人| 亚洲视频在线看| 色爱av美腿丝袜综合粉嫩av| 色爱av美腿丝袜综合粉嫩av| 91极品视频在线| 欧美色视频日本高清在线观看| 久久这里只有精品视频首页| 一区二区欧美日韩视频| 91精品国产高清| 亚洲国产精品推荐| 日韩精品高清在线观看| 亚洲精品久久久久中文字幕二区| 成人精品久久一区二区三区| zzjj国产精品一区二区| 欧美性感美女h网站在线观看免费| 亚洲国产成人久久综合一区| 菠萝蜜影院一区二区免费| 在线观看亚洲区| 日韩**中文字幕毛片| 成人精品视频久久久久| 国内精久久久久久久久久人| 最近更新的2019中文字幕| 日韩精品在线视频| 亚洲激情视频在线| 久久久久久久久久久av| 国产视频精品免费播放| 5566成人精品视频免费| 精品高清美女精品国产区| 97精品视频在线播放| 国产欧美日韩丝袜精品一区| 久久视频免费观看| 日韩中文字幕久久| 欧美精品电影免费在线观看| 日本久久精品视频| 欧美野外猛男的大粗鳮| www.日韩欧美| 国产精品视频免费观看www| 亚洲电影免费观看高清完整版| 一区二区欧美日韩视频| 亚洲欧洲在线免费| 538国产精品视频一区二区| 日韩在线免费视频观看| 亚洲欧洲视频在线| 亚洲伊人久久综合| 色噜噜狠狠狠综合曰曰曰88av| 亚洲无限乱码一二三四麻| 欧美性生活大片免费观看网址| 国产精品视频26uuu| 久久久中精品2020中文| 韩国美女主播一区| 欧美日韩亚洲一区二| 中文字幕日韩精品在线| 色青青草原桃花久久综合| 国模极品一区二区三区| 日韩欧美中文字幕在线观看| 69影院欧美专区视频| 555www成人网| 精品呦交小u女在线| 中文字幕亚洲在线| 国产精品久久久久秋霞鲁丝| 中文字幕国产亚洲2019| 在线国产精品视频| 草民午夜欧美限制a级福利片| 狠狠躁夜夜躁人人爽超碰91| 欧美性xxxx在线播放| 久久精品国产69国产精品亚洲| 久久久久久久久久婷婷| 国产在线观看91精品一区| 久久精品国产精品亚洲| 国产精品黄页免费高清在线观看| 成人乱人伦精品视频在线观看| 国产精品视频播放| 亚洲欧美日韩中文在线| 亚洲国产天堂网精品网站| 成人免费午夜电影| 人妖精品videosex性欧美| 欧美激情视频在线| 国产69精品久久久| 92福利视频午夜1000合集在线观看| 精品呦交小u女在线| 一区二区三区精品99久久| 成人精品网站在线观看| 97人人爽人人喊人人模波多| 91精品免费久久久久久久久| 欧美日韩国产一中文字不卡| 97婷婷大伊香蕉精品视频| 欧美第一黄网免费网站| 亚洲国产中文字幕久久网| 插插插亚洲综合网| 日韩精品中文字幕视频在线| 日韩电影中文字幕在线| 国产极品jizzhd欧美| 国产精品扒开腿爽爽爽视频| 日韩欧美亚洲范冰冰与中字| 日韩国产一区三区| 日韩大片在线观看视频| 成人av电影天堂| 国产裸体写真av一区二区| 国产91亚洲精品| 国产亚洲欧美一区| 久久偷看各类女兵18女厕嘘嘘| 国产精品免费久久久久影院| 国产一区二区三区久久精品| 欧美在线观看日本一区| 国内成人精品一区| 国产精品草莓在线免费观看| 欧美疯狂xxxx大交乱88av| 美日韩丰满少妇在线观看| 日本高清久久天堂| 午夜精品国产精品大乳美女| 97视频免费看| 亚洲人成网站在线播| 国产一区二区在线免费| 成人福利网站在线观看11| 国产成人精品久久| 欧美日韩在线视频观看| 中日韩美女免费视频网址在线观看| 欧美日韩一区免费| 欧美寡妇偷汉性猛交| 日韩欧美在线观看| 午夜精品一区二区三区在线播放| 国产精品久久久久久久久免费| xx视频.9999.com| 日韩在线欧美在线国产在线| 亚洲网站在线观看| 日韩成人av一区| 亚洲欧美在线看| 国产色婷婷国产综合在线理论片a| 一区二区三区视频免费在线观看| 色在人av网站天堂精品| 最近的2019中文字幕免费一页| 欧美大全免费观看电视剧大泉洋| 国产一区二区在线免费| 欧美另类高清videos| 欧洲亚洲妇女av| 久久亚洲精品国产亚洲老地址| 这里只有精品丝袜| 亚洲aa中文字幕| 欧美亚洲成人网| 中文字幕欧美在线| 亚洲老头老太hd| 国产精品日本精品| 亚洲精品自拍第一页| 在线观看不卡av| 国产日韩欧美91| 欧美精品videossex88| 91精品国产高清久久久久久久久| 性欧美长视频免费观看不卡| 欧美极品少妇xxxxⅹ裸体艺术| 国产z一区二区三区| 久久久久99精品久久久久| 国产精品日韩久久久久| 亚洲国产精品久久久久久| 一本色道久久88综合日韩精品| 亚洲男女性事视频| 久久99精品久久久久久噜噜|