iOS開發核心動畫之時鐘效果

2022-08-24 10:06:06 字數 3501 閱讀 1559

1. 建立秒針,因秒針與使用者無交換,可以用layer

1> 建立秒針

// 建立秒針

calayer

*secondlayer =[

calayer

layer

];

self

.secondlayer

=secondlayer

;

2> 設定背景色/尺寸/位置

設定錨點(0.5, 0.9)

// 設定背景色

secondlayer

.backgroundcolor =[

uicolor

redcolor

].cgcolor

;

// 設定尺寸和位置

cgfloat

clockviewh

=self

.clockview

.bounds

.size

.height

;

secondlayer

.frame

=cgrectmake(0

,0,1

,clockviewh

*0.5-10

);

secondlayer

.position

=cgpointmake

(clockviewh

*0.5

,clockviewh

*0.5

);

secondlayer

.anchorpoint

=cgpointmake

(0.5

,0.9

);

3> 將秒針layer新增到鐘錶圖層上

[

self

.clockview

.layer addsublayer

:secondlayer

];

4> 開啟定時器,每隔1s呼叫timechanged方法.來旋轉秒針

[

nstimer

scheduledtimerwithtimeinterval

:1.0

target

:self selector

:@selector

(timechanged

)userinfo

:nil repeats

:yes

];

[selftimechanged];

2. 秒針旋轉(實現監聽方法 - (void)timechanged)

1> 獲取當前日曆

nscalendar

*calendar =[

nscalendar

currentcalendar

];

2> 獲取當前日曆的秒數/分鐘數/小時數

nsdatecomponents

*cmp =[

calendar components

:nscalendarunitsecond

|nscalendarunitminute

|nscalendarunithour

fromdate

:[nsdate

date

]];

3> 獲取秒數, 秒針轉一圈60秒轉360度, 每秒轉6度, 計算當前秒數轉多少弧度

1度 = 1 / 180.0 * m_pi 弧度

// 計算弧度

cgfloat

seconda

=second *6

*(m_pi

/180

);

// 旋轉

self

.secondlayer

.transform

=catransform3dmakerotation

(seconda,0

,0,1

);

3. 同樣建立分鐘/時針

分鐘

-

(void

)setupmin

時針

-

(void

)setuphour

4. 在監聽方法 - (void)timechanged 中對分鐘/時針進行旋轉

分鐘 : 分鐘轉一圈60分鐘轉360度,每分轉6度.旋轉角度和秒針一樣

// 獲取分鐘

nsinteger

min

=cmp

.minute

;

cgfloat

mina

=min *6

*(m_pi

/180

);

self

.minlayer

.transform

=catransform3dmakerotation

(mina,0

,0,1

);

時針 : 時針轉一圈12小時轉360度,每小時轉30度, 分鐘走時針相應也會走,因此將分鐘走的時間不足1小時轉換成小時,最終時針旋轉角度

// 獲取時針

nsinteger

hour

=cmp

.hour

;

cgfloat

houra =(

hour

+min /60

)*30*

(m_pi

/180

);

self

.hourlayer

.transform

=catransform3dmakerotation

(houra,0

,0,1

);

iOS開發核心動畫之粒子效果

一.示意圖 繪畫出一條線,點選開始有很多粒子繞著線運動,點選重繪消除粒子和線 二.實現 設計思路 自定義乙個view來描述控制器的view,在view載入過程中進行初始化,給view新增手勢 uipangesturerecognizer 將自定義view轉成複製層,建立乙個粒子層,新增到複製層上,並...

IOS開發核心動畫篇 核心動畫簡介

ios開發ui篇 核心動畫簡介 一 簡單介紹 core animation,中文翻譯為核心動畫,它是一組非常強大的動畫處理api,使用它能做出非常炫麗的動畫效果,而且往往是事半功倍。也就是說,使用少量的 就可以實現非常強大的功能。core animation是跨平台的,可以用在mac os x和io...

IOS核心動畫

void basicanimation calayer layer animation.duration 2 animation.delegate self animation.removedoncompletion no animation.fillmode kcafillmodeforwards...