iOS 幾種簡單動(dòng)畫

UIView 動(dòng)畫

    UILabel *lab = [[UILabel alloc]initWithFrame:CGRectMake(10, 40, 100, 80)];
    lab.textAlignment = NSTextAlignmentCenter;
    lab.text = @"測試滑塊";
    lab.backgroundColor = [UIColor lightGrayColor];
    [self.view addSubview:lab];
   /*
  [UIView animateWithDuration:2.0f animations:^{
      lab.center = CGPointMake(200, 300);
  } completion:^(BOOL finished) {
      NSLog(@"動(dòng)畫完成!");
  }];*/
    
    [UIView animateKeyframesWithDuration:2.0f/*動(dòng)畫時(shí)長*/ delay:1.0f/*延時(shí)時(shí)長*/ options:UIViewKeyframeAnimationOptionRepeat/*動(dòng)畫類型*/ animations:^{/*動(dòng)畫執(zhí)行內(nèi)容*/
        lab.center = CGPointMake(200, 300);
    } completion:^(BOOL finished) {/*動(dòng)畫結(jié)束處理*/
         NSLog(@"動(dòng)畫完成!");
    }];

UIImageView 動(dòng)畫

NSMutableArray *array = [NSMutableArray array];
    for (int i = 1 ; i < 16; i++) {
        NSString *imageName = [NSString stringWithFormat:@"login_%d",i];
         UIImage *image = [UIImage imageNamed:imageName];
        [array addObject:image];
    }
    _imageView.animationImages = array;//動(dòng)畫圖片內(nèi)容
    _imageView.animationDuration = 1.0f;//動(dòng)畫時(shí)長
    _imageView.animationRepeatCount = 10;//動(dòng)畫重復(fù)次數(shù)
    [_imageView startAnimating];//開始執(zhí)行動(dòng)畫
    
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(6 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        if ([_imageView isAnimating]/*判斷當(dāng)前是否正在動(dòng)畫執(zhí)行中*/) {
            [_imageView stopAnimating];//結(jié)束執(zhí)行動(dòng)畫
        }
        
    });

CABasicAnimation 動(dòng)畫

// 創(chuàng)建CABasicAnimation
    CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
    anim.duration = 1.5; // 動(dòng)畫持續(xù)1.5s

    anim.repeatCount = 2;//動(dòng)畫重復(fù)次數(shù) default is 1
    
    anim.beginTime = 1.0f;// 動(dòng)畫延遲時(shí)間 default is 0
    
    //動(dòng)畫執(zhí)行的過程中 先快后慢  先慢后快  勻速 等方式完成動(dòng)畫
    anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    
    anim.autoreverses = NO;//動(dòng)畫結(jié)束的時(shí)候是否要按原來返回到原來的狀態(tài)
    
    
    anim.fromValue = @1.0f;//動(dòng)畫改變起始值
    
    anim.toValue = @0.5;//動(dòng)畫改變結(jié)束值
    
//    anim.byValue  和初始狀態(tài)相比的改變量
    
    
    anim.delegate = self;//delegate 可以監(jiān)聽到動(dòng)畫開始和動(dòng)畫結(jié)束
    
    // 動(dòng)畫結(jié)束的時(shí)候敷存,保持結(jié)束時(shí)的狀態(tài)
    anim.removedOnCompletion = NO;
    // 始終保持最新的效果
    anim.fillMode = kCAFillModeForwards;
    
    [textView.layer addAnimation:anim forKey:nil];

//動(dòng)畫開始時(shí)
- (void)animationDidStart:(CAAnimation *)anim
{
    NSLog(@"開始了");
}

//動(dòng)畫結(jié)束時(shí)
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
{
    //方法中的flag參數(shù)表明了動(dòng)畫是自然結(jié)束還是被打斷,比如調(diào)用了removeAnimationForKey:方法或removeAnimationForKey方法恨旱,flag為NO,如果是正常結(jié)束屏积,flag為YES读整。
    NSLog(@"結(jié)束了");
}

給一個(gè)視圖添加layer動(dòng)畫時(shí),真正移動(dòng)并不是我們的視圖本身骇径,而是 presentation layer 的一個(gè)緩存。動(dòng)畫開始時(shí) presentation layer開始移動(dòng)者春,原始layer隱藏破衔,動(dòng)畫結(jié)束時(shí),presentation layer從屏幕上移除钱烟,原始layer顯示晰筛。
解釋了為什么我們的視圖在動(dòng)畫結(jié)束后又回到了原來的狀態(tài)。
可以解釋為什么在動(dòng)畫移動(dòng)過程中拴袭,不能響應(yīng)任何操作读第。

完成layer動(dòng)畫之后,一般是將layer屬性設(shè)置為最終狀態(tài)的屬性

// 動(dòng)畫結(jié)束的時(shí)候拥刻,保持結(jié)束時(shí)的狀態(tài)
    anim.removedOnCompletion = NO;
    // 始終保持最新的效果
    anim.fillMode = kCAFillModeForwards;

如果有特殊需求怜瞒,希望動(dòng)畫完成后 再回到原來的狀態(tài) 就不用設(shè)置這兩個(gè)屬性

一些常用的animationWithKeyPath值的總結(jié)
值 說明 使用形式
transform.scale 比例轉(zhuǎn)化 @(0.8)
transform.scale.x 寬的比例 @(0.8)
transform.scale.y 高的比例 @(0.8)
transform.rotation.x 圍繞x軸旋轉(zhuǎn) @(M_PI)
transform.rotation.y 圍繞y軸旋轉(zhuǎn) @(M_PI)
transform.rotation.z 圍繞z軸旋轉(zhuǎn) @(M_PI)
cornerRadius 圓角的設(shè)置 @(50)
backgroundColor 背景顏色的變化 (id)[UIColor purpleColor].CGColor
bounds 大小,中心不變
[NSValue valueWithCGRect:CGRectMake(0, 0, 200, 200)];
position 位置(中心點(diǎn)的改變) [NSValue valueWithCGPoint:CGPointMake(300, 300)];
contents 內(nèi)容般哼,比如UIImageView的圖片 imageAnima.toValue = (id)[UIImage imageNamed:@"to"].CGImage;
opacity 透明度 @(0.7)
contentsRect.size.width 橫向拉伸縮放 @(0.4)最好是0~1之間的

多謝 方弘毅 寫的文章 再寫一遍之為加深理解吴汪!
原文鏈接:http://www.reibang.com/p/02c341c748f9

CGAffineTransform 動(dòng)畫

這種只能進(jìn)行一次改變,它的改變參照是最初使得imageView

    CGAffineTransform t = CGAffineTransformMakeScale(1.5, 1.5);
    self.imageView.transform = t;

   CGAffineTransform t = CGAffineTransformMakeTranslation(10, 10);
   self.imageView.transform = t;

   CGAffineTransform t = CGAffineTransformMakeRotation(M_PI/4);
    self.imageView.transform = t;

這種可以連續(xù)改變 每次是以上次改變的結(jié)果 為參照

CGAffineTransform t = CGAffineTransformTranslate(self.imageView.transform, 10, 10);
    self.imageView.transform = t;
CGAffineTransform t = CGAffineTransformScale(self.imageView.transform, 0.9, 0.9);
    self.imageView.transform = t;
CGAffineTransform t = CGAffineTransformRotate(self.imageView.transform, M_PI/8);
    self.imageView.transform = t;
 //清空所有的 效果  回到原來的位置
    self.imageView.transform = CGAffineTransformIdentity;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逝她,一起剝皮案震驚了整個(gè)濱河市浇坐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌黔宛,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件擒贸,死亡現(xiàn)場離奇詭異臀晃,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)介劫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門徽惋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人座韵,你說我怎么就攤上這事险绘√呔” “怎么了?”我有些...
    開封第一講書人閱讀 163,316評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵宦棺,是天一觀的道長瓣距。 經(jīng)常有香客問我,道長代咸,這世上最難降的妖魔是什么蹈丸? 我笑而不...
    開封第一講書人閱讀 58,294評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮呐芥,結(jié)果婚禮上逻杖,老公的妹妹穿的比我還像新娘。我一直安慰自己思瘟,他們只是感情好荸百,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著滨攻,像睡著了一般管搪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上铡买,一...
    開封第一講書人閱讀 51,245評(píng)論 1 299
  • 那天更鲁,我揣著相機(jī)與錄音,去河邊找鬼奇钞。 笑死澡为,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的景埃。 我是一名探鬼主播媒至,決...
    沈念sama閱讀 40,120評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼谷徙!你這毒婦竟也來了拒啰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,964評(píng)論 0 275
  • 序言:老撾萬榮一對情侶失蹤完慧,失蹤者是張志新(化名)和其女友劉穎谋旦,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體屈尼,經(jīng)...
    沈念sama閱讀 45,376評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡册着,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了脾歧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甲捏。...
    茶點(diǎn)故事閱讀 39,764評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鞭执,靈堂內(nèi)的尸體忽然破棺而出司顿,到底是詐尸還是另有隱情芒粹,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評(píng)論 5 344
  • 正文 年R本政府宣布大溜,位于F島的核電站化漆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏猎提。R本人自食惡果不足惜获三,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锨苏。 院中可真熱鬧疙教,春花似錦、人聲如沸伞租。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽葵诈。三九已至裸弦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間作喘,已是汗流浹背理疙。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留泞坦,地道東北人窖贤。 一個(gè)月前我還...
    沈念sama閱讀 47,819評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像贰锁,于是被迫代替她去往敵國和親赃梧。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評(píng)論 2 354

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

  • 在iOS中隨處都可以看到絢麗的動(dòng)畫效果豌熄,實(shí)現(xiàn)這些動(dòng)畫的過程并不復(fù)雜授嘀,今天將帶大家一窺ios動(dòng)畫全貌挫以。在這里你可以看...
    每天刷兩次牙閱讀 8,485評(píng)論 6 30
  • Core Animation Core Animation以清,中文翻譯為核心動(dòng)畫权纤,它是一組非常強(qiáng)大的動(dòng)畫處理API院尔,...
    45b645c5912e閱讀 3,028評(píng)論 0 21
  • 在iOS中隨處都可以看到絢麗的動(dòng)畫效果,實(shí)現(xiàn)這些動(dòng)畫的過程并不復(fù)雜履婉,今天將帶大家一窺iOS動(dòng)畫全貌舌菜。在這里你可以看...
    F麥子閱讀 5,110評(píng)論 5 13
  • iOS動(dòng)畫篇之CoreAnimation動(dòng)畫 9月 22, 2016發(fā)布在Objective-C App如果想被大...
    白水灬煮一切閱讀 2,028評(píng)論 0 0
  • 轉(zhuǎn)載:http://www.reibang.com/p/32fcadd12108 每個(gè)UIView有一個(gè)伙伴稱為l...
    F麥子閱讀 6,196評(píng)論 0 13