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
];
[
self
timechanged];
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...