基于CABasicAnimation一些簡(jiǎn)單的動(dòng)畫

今天很匆忙的寫了這篇文章,希望對(duì)大家與幫助。先展示一下動(dòng)畫效果泳梆!


2.gif

都是一些簡(jiǎn)單的動(dòng)畫效果
// 縮放

/**
*  縮放
*/
- (void)scale {
   CALayer *scaleLayer = [[CALayer alloc] init];
   scaleLayer.backgroundColor = [UIColor purpleColor].CGColor;
   scaleLayer.frame = CGRectMake(50, 70, 25, 25);
   scaleLayer.shadowOffset = CGSizeMake(0, 10);
   scaleLayer.shadowRadius = 3.0f;
   scaleLayer.shadowOpacity = 0.5f;
   scaleLayer.cornerRadius = scaleLayer.bounds.size.width * 0.5;
   scaleLayer.masksToBounds = YES;
   [self.view.layer addSublayer:scaleLayer];
   
   CABasicAnimation *scaleAnimation = [[CABasicAnimation alloc] init];
   scaleAnimation.keyPath = @"transform.scale"; // 設(shè)置動(dòng)畫的方式
   scaleAnimation.fromValue = [NSNumber numberWithInteger:1]; // 起點(diǎn)
   scaleAnimation.toValue = [NSNumber numberWithInteger:2]; // 終點(diǎn)
   scaleAnimation.duration = 1.0f; // 設(shè)置動(dòng)畫的時(shí)間
   scaleAnimation.repeatCount = MAXFLOAT; // 設(shè)置動(dòng)畫的次數(shù)
   scaleAnimation.autoreverses = YES; // 返回原始狀態(tài)是否動(dòng)畫方式
   
   [scaleLayer addAnimation:scaleAnimation forKey:@"scale"]; // 添加動(dòng)畫
}

// 平移

/**
 *  平移
 */
- (void)position {
    CALayer *positionLayer = [[CALayer alloc] init];
    positionLayer.backgroundColor = [UIColor redColor].CGColor;
    positionLayer.cornerRadius = 5.0f;
    positionLayer.masksToBounds = YES;
    positionLayer.frame = CGRectMake(50, 140, 25, 25);
    [self.view.layer addSublayer:positionLayer];
    
    CABasicAnimation *positionAnimation = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"]; // 設(shè)置動(dòng)畫方式沿著X軸
    positionAnimation.toValue = [NSNumber numberWithInteger:250];
    positionAnimation.duration = 3.0f;
    positionAnimation.repeatCount = MAXFLOAT;
    positionAnimation.autoreverses = YES;
    
    [positionLayer addAnimation:positionAnimation forKey:@"position"];
}


// 旋轉(zhuǎn)

/**
 *  旋轉(zhuǎn)
 */
- (void)rotate {
    CALayer *rotateLayer = [[CALayer alloc] init];
    rotateLayer.backgroundColor = [UIColor blueColor].CGColor;
    rotateLayer.cornerRadius = 5.0f;
    rotateLayer.masksToBounds = YES;
    rotateLayer.frame = CGRectMake(50, 200, 50, 50);
    [self.view.layer addSublayer:rotateLayer];
    
    CABasicAnimation *rotateAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
    rotateAnimation.toValue = [NSNumber numberWithFloat:M_PI * 2];
    rotateAnimation.duration = 2.0f;
    rotateAnimation.autoreverses = NO;
    rotateAnimation.repeatCount = MAXFLOAT;
    
    [rotateLayer addAnimation:rotateAnimation forKey:@"rotate"];
}

// 動(dòng)畫結(jié)合

/**
 *  動(dòng)畫組
 */
- (void)groupAnimation {
    CALayer *groupLayer = [[CALayer alloc] init];
    groupLayer.backgroundColor = [UIColor grayColor].CGColor;
    groupLayer.frame = CGRectMake(50, 280, 25, 25);
    groupLayer.cornerRadius = 10.0f;
    groupLayer.masksToBounds = YES;
    [self.view.layer addSublayer:groupLayer];
    
    // 縮放
    CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
    scaleAnimation.fromValue = [NSNumber numberWithFloat:1.0f];
    scaleAnimation.toValue = [NSNumber numberWithFloat:2.0];
    scaleAnimation.duration = 1.0f;
    scaleAnimation.repeatCount = MAXFLOAT;
    scaleAnimation.autoreverses = YES;
    
    // 平移
    CABasicAnimation *positionAnimation = [CABasicAnimation animationWithKeyPath:@"transform.translation"];
    positionAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(300, 400)];
    positionAnimation.duration = 3.0f;
    positionAnimation.autoreverses = YES;
    
    // 旋轉(zhuǎn)
    CABasicAnimation *rotateAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
    rotateAnimation.toValue = [NSNumber numberWithFloat:M_PI * 2];
    rotateAnimation.duration = 0.8f;
    rotateAnimation.autoreverses = NO;
    rotateAnimation.repeatCount = MAXFLOAT;
    
    // 動(dòng)畫組
    CAAnimationGroup *animationGroup = [[CAAnimationGroup alloc] init];
    animationGroup.duration = 2.0f;
    animationGroup.autoreverses = YES;
    animationGroup.repeatCount = MAXFLOAT;
    animationGroup.animations = @[scaleAnimation, positionAnimation, rotateAnimation];
    [groupLayer addAnimation:animationGroup forKey:@"group"];
}

//iOS還有一些其他的KeyPath來實(shí)現(xiàn)其他的動(dòng)畫

//transform.rotation.x       繞X軸旋轉(zhuǎn)
//transform.rotation.y       繞Y軸旋轉(zhuǎn)
//transform.scale.x          縮放X
//transform.scale.y          縮放Y
//transform.translation.x    平移X
//transform.translation.y    平移Y
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子偿荷,更是在濱河造成了極大的恐慌,老刑警劉巖唠椭,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遭顶,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡泪蔫,警方通過查閱死者的電腦和手機(jī)棒旗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撩荣,“玉大人铣揉,你說我怎么就攤上這事〔筒埽” “怎么了逛拱?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)台猴。 經(jīng)常有香客問我朽合,道長(zhǎng)俱两,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任曹步,我火速辦了婚禮宪彩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘讲婚。我一直安慰自己尿孔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布筹麸。 她就那樣靜靜地躺著活合,像睡著了一般。 火紅的嫁衣襯著肌膚如雪物赶。 梳的紋絲不亂的頭發(fā)上白指,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音酵紫,去河邊找鬼告嘲。 笑死,一個(gè)胖子當(dāng)著我的面吹牛憨闰,可吹牛的內(nèi)容都是我干的状蜗。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼鹉动,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼轧坎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起泽示,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤缸血,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后械筛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捎泻,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年埋哟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了笆豁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赤赊,死狀恐怖闯狱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情抛计,我是刑警寧澤哄孤,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站吹截,受9級(jí)特大地震影響瘦陈,放射性物質(zhì)發(fā)生泄漏凝危。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一晨逝、第九天 我趴在偏房一處隱蔽的房頂上張望蛾默。 院中可真熱鬧,春花似錦咏花、人聲如沸趴生。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至刘急,卻和暖如春棚菊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背叔汁。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工统求, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人据块。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓码邻,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親另假。 傳聞我的和親對(duì)象是個(gè)殘疾皇子像屋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

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

  • 利用CABasicAnimation來實(shí)現(xiàn)一些縮放,平移边篮,旋轉(zhuǎn)的動(dòng)畫 1.縮放 2.平移 3.旋轉(zhuǎn) 4.動(dòng)畫組己莺,將...
    CoderGuogt閱讀 309評(píng)論 0 0
  • 在iOS實(shí)際開發(fā)中常用的動(dòng)畫無非是以下四種:UIView動(dòng)畫,核心動(dòng)畫戈轿,幀動(dòng)畫凌受,自定義轉(zhuǎn)場(chǎng)動(dòng)畫。 1.UIView...
    請(qǐng)叫我周小帥閱讀 3,082評(píng)論 1 23
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,726評(píng)論 25 707
  • 如果,我連追尋的勇氣都沒有色乾,那我還不如一具行尸走肉誊册。 有些事情,想起來讓人有點(diǎn)感覺像是穿越到了未來杈湾。 課上解虱,看到了...
    楓林雨歇閱讀 365評(píng)論 0 1
  • 1 一次心理學(xué)講座上殴泰,學(xué)員和老師探討孩子的教育問題于宙。老師問:“大家小時(shí)候,想過為什么要努力讀書這個(gè)問題嗎悍汛?”有學(xué)員...
    琴心心閱讀 576評(píng)論 4 9