W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Core Animation基于一個(gè)假設(shè),說(shuō)屏幕上的任何東西都可以(或者可能)做動(dòng)畫(huà)。動(dòng)畫(huà)并不需要你在Core Animation中手動(dòng)打開(kāi),相反需要明確地關(guān)閉,否則他會(huì)一直存在。
當(dāng)你改變CALayer
的一個(gè)可做動(dòng)畫(huà)的屬性,它并不能立刻在屏幕上體現(xiàn)出來(lái)。相反,它是從先前的值平滑過(guò)渡到新的值。這一切都是默認(rèn)的行為,你不需要做額外的操作。
這看起來(lái)這太棒了,似乎不太真實(shí),我們來(lái)用一個(gè)demo解釋一下:首先和第一章“圖層樹(shù)”一樣創(chuàng)建一個(gè)藍(lán)色的方塊,然后添加一個(gè)按鈕,隨機(jī)改變它的顏色。代碼見(jiàn)清單7.1。點(diǎn)擊按鈕,你會(huì)發(fā)現(xiàn)圖層的顏色平滑過(guò)渡到一個(gè)新值,而不是跳變(圖7.1)。
清單7.1 隨機(jī)改變圖層顏色
@interface ViewController ()
@property (nonatomic, weak) IBOutlet UIView *layerView;
@property (nonatomic, weak) IBOutlet CALayer *colorLayer;/*熱心人發(fā)現(xiàn)這里應(yīng)該改為@property (nonatomic, strong) CALayer *colorLayer;否則運(yùn)行結(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號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: