iOS之CoreAnimation(基礎(chǔ)動畫)筆記

  • 首先我們有必要先了解下CALayer對象。CALayer包含在QuartzCore框架中赃梧,這是一個跨平臺的框架紧憾,既可以用在iOS中又可以用在Mac OS X中结笨。在使用Core Animation開發(fā)動畫的本質(zhì)就是將CALayer中的內(nèi)容轉(zhuǎn)化為位圖從而供硬件操作反惕。


    Snip20160819_1.png
  • CALayer常用屬性

在iOS中CALayer的設(shè)計主要是了為了內(nèi)容展示和動畫操作尝艘,CALayer本身并不包含在UIKit中,它不能響應(yīng)事件姿染。由于CALayer在設(shè)計之初就考慮它的動畫操作功能背亥,CALayer很多屬性在修改時都能形成動畫效果,這種屬性稱為“隱式動畫屬性”悬赏。但是對于UIView的根圖層而言屬性的修改并不形成動畫效果隘梨,因為很多情況下根圖層更多的充當容器的做用,如果它的屬性變動形成動畫效果會直接影響子圖層舷嗡。另外轴猎,UIView的根圖層創(chuàng)建工作完全由iOS負責完成,無法重新創(chuàng)建进萄,但是可以往根圖層中添加子圖層或移除子圖層

Snip20160819_3.png

以上這些都是支持“隱式動畫”

- (void)viewDidLoad {

    [super viewDidLoad];
    //實例化自定義圖層
    self.myLayer = [CALayer layer];
    //設(shè)置大小
    [self.myLayer setBounds:CGRectMake(100, 100, 100, 100)];
    //設(shè)置背景顏色
    [self.myLayer setBackgroundColor:[UIColor redColor].CGColor];
    // 中心點 Position 相當于View.center
    [self.myLayer setPosition:CGPointMake(100, 100)];
    
    self.myLayer.shadowColor = [UIColor  orangeColor].CGColor;
    
    self.myLayer.shadowOffset = CGSizeMake(10, 10);
    
    [self.view.layer addSublayer:self.myLayer];
}

#warning - CALayer 屬性不能響應(yīng)事件

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    
    UITouch *touch = touches.anyObject;
    
    CGPoint location = [touch locationInView:self.view];

    //位置
    [self.myLayer setPosition:location];

    //尺寸
    NSInteger size = arc4random_uniform(50) + 51;
    
    [self.myLayer setBounds:CGRectMake(0, 0, size, size)];
    //圓角
    NSInteger rotation = arc4random_uniform(30);
    
    [self.myLayer setCornerRadius:rotation];
    
    //旋轉(zhuǎn)角度
    CGFloat angle = arc4random_uniform(180) /180.0 * M_PI;
    
    [self.myLayer setTransform:CATransform3DMakeRotation(angle, 0, 0, 1)];

    self.myLayer.backgroundColor = [UIColor colorWithRed:arc4random_uniform(255.0)/255.0 green:arc4random_uniform(255.0)/255.0 blue:arc4random_uniform(255.0)/255.0 alpha:1].CGColor;
    
}

  • UIView的根圖層創(chuàng)建工作完全由iOS負責完成捻脖,無法重新創(chuàng)建,但是可以往根圖層中添加子圖層或移除子圖層
Snip20160819_7.png
  • 基礎(chǔ)動畫 - CABasicAnimation

Core Animation是蘋果公司給我們提供的一套強大的核心動畫類庫中鼠,而核心動畫又分為基礎(chǔ)動畫可婶、關(guān)鍵幀動畫、動畫組援雇、轉(zhuǎn)場動畫矛渴。這里只做 基礎(chǔ)動畫(CABasicAnimation)的筆記。

  • CABasicAnimation:基礎(chǔ)動畫惫搏,通過屬性修改進行動畫參數(shù)控制具温,只有初始狀態(tài)和結(jié)束狀態(tài)
    [super viewDidLoad];
    
    self.view.backgroundColor=[UIColor orangeColor];
    
    // 自定義一個圖層
    _layer=[[CALayer alloc]init];
    
    _layer.bounds=CGRectMake(0, 0, 30, 30);
    
    _layer.position=CGPointMake(50, 150);
    
    _layer.backgroundColor = [UIColor redColor].CGColor;

    [self.view.layer addSublayer:_layer];
    
    [self createYellowView];
}
- (void)createYellowView {
    
    _yellowView = [[UIView alloc] initWithFrame:CGRectMake(100, 150, 30, 30)];
    
    _yellowView.backgroundColor = [UIColor yellowColor];
    
    [self.view addSubview:_yellowView];
    
}

- (void)yellowRunPoint:(CGPoint)location {
    
    [UIView animateWithDuration:3.0 animations:^{
        
        _yellowView.center = location;
        
    }];
}

#pragma mark 移動動畫
-(void)translatonAnimation:(CGPoint)location{
    //1.創(chuàng)建動畫并指定動畫屬性
    CABasicAnimation *basicAnimation=[CABasicAnimation animationWithKeyPath:@"position"];
    
    //2.設(shè)置動畫屬性初始值和結(jié)束值
    
    // basicAnimation.fromValue=[NSNumber numberWithInteger:50];//可以不設(shè)置,默認為圖層初始狀態(tài)
    basicAnimation.toValue=[NSValue valueWithCGPoint:location];
    
    //設(shè)置其他動畫屬性
    basicAnimation.duration=3.0;//動畫時間5秒
    
   // basicAnimation.repeatCount=HUGE_VALF;//設(shè)置重復(fù)次數(shù),HUGE_VALF可看做無窮大筐赔,起到循環(huán)動畫的效果
    
    //basicAnimation.removedOnCompletion=YES;//運行一次是否移除動畫
    
    //3.添加動畫到圖層铣猩,注意key相當于給動畫進行命名,以后獲得該動畫時可以使用此名稱獲取
    [_layer addAnimation:basicAnimation forKey:@"BasicAnimation_Translation"];
    
    
}
#pragma mark 點擊事件
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    
    UITouch *touch=touches.anyObject;
    
    CGPoint location= [touch locationInView:self.view];
    //創(chuàng)建并開始動畫
    [self translatonAnimation:location];
    
    [self yellowRunPoint:location];
    
}
  • 紅色VIew是和黃色View的動畫效果是一樣的茴丰,所紅色VIew是黃色View的系統(tǒng)封裝方法的實現(xiàn)


先寫這么多达皿,寫博客太累。贿肩。峦椰。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市汰规,隨后出現(xiàn)的幾起案子汤功,更是在濱河造成了極大的恐慌,老刑警劉巖控轿,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冤竹,死亡現(xiàn)場離奇詭異拂封,居然都是意外死亡,警方通過查閱死者的電腦和手機鹦蠕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門冒签,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人钟病,你說我怎么就攤上這事萧恕。” “怎么了肠阱?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵票唆,是天一觀的道長。 經(jīng)常有香客問我屹徘,道長走趋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任噪伊,我火速辦了婚禮簿煌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鉴吹。我一直安慰自己姨伟,他們只是感情好,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布豆励。 她就那樣靜靜地躺著夺荒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪良蒸。 梳的紋絲不亂的頭發(fā)上技扼,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機與錄音诚啃,去河邊找鬼淮摔。 笑死,一個胖子當著我的面吹牛始赎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播仔燕,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼造垛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了晰搀?” 一聲冷哼從身側(cè)響起五辽,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎外恕,沒想到半個月后杆逗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乡翅,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年罪郊,在試婚紗的時候發(fā)現(xiàn)自己被綠了蠕蚜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡悔橄,死狀恐怖靶累,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情癣疟,我是刑警寧澤挣柬,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站睛挚,受9級特大地震影響邪蛔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扎狱,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一店溢、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧委乌,春花似錦床牧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至壕吹,卻和暖如春著蛙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背耳贬。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工踏堡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人咒劲。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓顷蟆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親腐魂。 傳聞我的和親對象是個殘疾皇子帐偎,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復(fù)雜蛔屹,今天將帶大家一窺ios動畫全貌削樊。在這里你可以看...
    每天刷兩次牙閱讀 8,495評論 6 30
  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復(fù)雜,今天將帶大家一窺iOS動畫全貌漫贞。在這里你可以看...
    F麥子閱讀 5,113評論 5 13
  • 概覽 在iOS中隨處都可以看到絢麗的動畫效果甸箱,實現(xiàn)這些動畫的過程并不復(fù)雜,今天將帶大家一窺iOS動畫全貌迅脐。在這里你...
    Yiart閱讀 3,819評論 3 34
  • 在iOS實際開發(fā)中常用的動畫無非是以下四種:UIView動畫芍殖,核心動畫,幀動畫仪际,自定義轉(zhuǎn)場動畫围小。 1.UIView...
    請叫我周小帥閱讀 3,101評論 1 23
  • Core Animation Core Animation,中文翻譯為核心動畫树碱,它是一組非常強大的動畫處理API肯适,...
    45b645c5912e閱讀 3,032評論 0 21