CALayer的隱式動畫例項 鐘錶

2021-07-11 01:14:44 字數 1745 閱讀 9778

表盤的設定

clockpan.h

#import 

@inte***ce

clockpan : uiview

@property (nonatomic, strong) uiimage *image;

- (instancetype)initwithimage:(uiimage *)image; //表盤的背景貼紙, 可以讓設計師給你乙個精美的表盤樣式

@end

clockpan.m

#import "clockpan.h"

@implementation

clockpan

- (instancetype)initwithimage:(uiimage *)image

return

self;

}- (void)setimage:(uiimage *)image

- (void)drawrect:(cgrect)rect

@end

clock的檢視控制器

#import "viewcontroller.h"

#import "clockpan.h" //呼叫表盤view

#define kclockw self.clockpan.bounds.size.width

//角度制轉化為弧度制

#define angle2radian(angle) ((angle) / 180.0 * m_pi)

#define perseconda 6 //每秒6度

#define perminutea 6 //每分6度

#define perhoura 30 //每小時30度

#define perminutehoura 0.5 //每分鐘時針掃過0.5度

#define persecondminutea 0.1 //每秒分針掃過0.1度

@inte***ce

viewcontroller ()

@property (weak, nonatomic) iboutlet clockpan *clockpan; //表盤

@property (weak, nonatomic) iboutlet

uilabel *timelabel; //時間label

@property (weak, nonatomic) iboutlet

uiimageview *heartimgview; //心跳圖形

@property (nonatomic, strong) calayer *sencondlayer; //秒針layer

@property (nonatomic, strong) calayer *minutelayer; //分針layer

@property (nonatomic, strong) calayer *hourlayer; //時針layer

@end

@implementation

viewcontroller

- (void)viewdidload

- (void)timechange

else

}- (void)setupsecondlayer

- (void)setupminutelayer

- (void)setuphourlayer

@end

Core Animation 的隱式動畫

那我們來看看系統究竟幫我們做了哪些東西。如果你自己設定了動畫型別和動畫時間,表現出來就是你指定的動畫,如果沒有,那麼系統會自動幫我們做了動畫型別和動畫時間 這就是隱式動畫 note catransaction概念 catransaction沒有屬性或者例項方法,並且也不能用 alloc和 init方...

完成塊 隱式動畫

基於uiview的block的動畫允許你在動畫結束的時候提供乙個完成的動作。catranscation介面提供的 setcompletionblock 方法也有同樣的功能。我們來調整上個例子,在顏色變化結束之後執行一些操作。我們來新增乙個完成之後的block,用來在每次顏色變化結束之後切換到另乙個旋...

隱式動畫筆記

什麼是隱式動畫?了解什麼是隱式動畫前,要先了解是什麼根層和非根層.根層 uiview內部自動關聯著的那個layer我們稱它是根層.非根層 自己手動建立的層,稱為非根層.隱式動畫就是當對非根層的部分屬性進行修改時,它會自動的產生一些動畫的效果.我們稱這個預設產生的動畫為隱式動畫.如何取消隱式動畫?首先...