限定pan手勢只能在圓內移動view

2021-09-23 21:27:22 字數 1706 閱讀 6480

限定pan手勢只能在圓內移動view

效果:

雖然看起來很簡單,但實現原理還是稍微有點複雜-_-!!

核心的地方,就是需要計算pan手勢的點與指定點的距離,不能超過這個距離,超過了就讓動畫還原,很容易理解:)

//

// rootviewcontroller.m

// circle

////

#import "rootviewcontroller.h"

@inte***ce rootviewcontroller ()

@end

@implementation rootviewcontroller

- (void)viewdidload

; circlelayer.position = self.view.center;

circlelayer.cornerradius = 250/2.f;

circlelayer.opacity = 0.5f;

circlelayer.backgroundcolor = [uicolor orangecolor].cgcolor;

[self.view.layer addsublayer:circlelayer];

// 移動手勢

uipangesturerecognizer *pan = \

[[uipangesturerecognizer alloc] initwithtarget:self

action:@selector(gestureevent:)];

// 用於移動用的view

uiview *move = [[uiview alloc] initwithframe:(cgrect)];

move.backgroundcolor = [uicolor cyancolor];

move.center = self.view.center;

move.layer.cornerradius = 50/2.f;

[move addgesturerecognizer:pan];

[self.view addsubview:move];

}- (void)gestureevent:(uipangesturerecognizer *)gesture

]; }

// 狀態改變

if (gesture.state == uigesturerecognizerstatechanged)

else

completion:^(bool finished) ];}}

// 結束

if (gesture.state == uigesturerecognizerstateended)];}

}@end

核心**處:

1. 計算座標值

2. 距離超出指定範圍的時候就必須要關閉pan手勢並執行動畫,動畫結束後再開啟pan手勢,相當重要哦.

限定pan手勢只能在圓內移動view

限定pan手勢只能在圓內移動view 效果 雖然看起來很簡單,但實現原理還是稍微有點複雜 核心的地方,就是需要計算pan手勢的點與指定點的距離,不能超過這個距離,超過了就讓動畫還原,很容易理解 circle import rootviewcontroller.h inte ce rootviewco...

Kettle Kitchen和Pan的命令列引數

引數語法 name value 引數以斜線 或者橫線 開頭,後面跟引數名稱。大部分引數後面都要有引數值。引數和引數值之間用冒號 或者 連線,引數值裡面如果有空格,引數值必須用單引號或雙引號引起來。kitchen和pan共有的引數如下 引數名引數含義 作用norep rep資源庫名稱 要連線的資源庫名...

個域網(PAN)技術

個人域網 pan 技術,區域網,都會網路,廣域網。個人域網 pan 技術,個人區域網四種核心技術 能在可攜式消費電器與通訊裝置之間進行短距離通訊的網路。其覆蓋範圍一般在10公尺半徑以內。pan的優點在於 它能夠以一種無縫和透明的方式自動發現落在pos內的任何裝置,並與其建立連線。pan的範圍通常只有...