W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Core Animation基于一個假設,說屏幕上的任何東西都可以(或者可能)做動畫。動畫并不需要你在Core Animation中手動打開,相反需要明確地關閉,否則他會一直存在。
當你改變CALayer
的一個可做動畫的屬性,它并不能立刻在屏幕上體現(xiàn)出來。相反,它是從先前的值平滑過渡到新的值。這一切都是默認的行為,你不需要做額外的操作。
這看起來這太棒了,似乎不太真實,我們來用一個demo解釋一下:首先和第一章“圖層樹”一樣創(chuàng)建一個藍色的方塊,然后添加一個按鈕,隨機改變它的顏色。代碼見清單7.1。點擊按鈕,你會發(fā)現(xiàn)圖層的顏色平滑過渡到一個新值,而不是跳變(圖7.1)。
清單7.1 隨機改變圖層顏色
@interface ViewController ()
@property (nonatomic, weak) IBOutlet UIView *layerView;
@property (nonatomic, weak) IBOutlet CALayer *colorLayer;/*熱心人發(fā)現(xiàn)這里應該改為@property (nonatomic, strong) CALayer *colorLayer;否則運行結(jié)果不正確。
*/
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
//create sublayer
self.colorLayer = [CALayer layer];
self.colorLayer.frame = CGRectMake(50.0f, 50.0f, 100.0f, 100.0f);
self.colorLayer.backgroundColor = [UIColor blueColor].CGColor;
//add it to our view
[self.layerView.layer addSublayer:self.colorLayer];
}
- (IBAction)changeColor
{
//randomize the layer background color
CGFloat red = arc4random() / (CGFloat)INT_MAX;
CGFloat green = arc4random() / (CGFloat)INT_MAX;
CGFloat blue = arc4random() / (CGFloat)INT_MAX;
self.colorLayer.backgroundColor = [UIColor colorWithRed:red green:green blue:blue alpha:1.0].CGColor; ?
}
@end
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: