中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iOS動畫:UIView動畫和CALayer動畫(CABasicAnimation、CAKeyframeAnimation的使用)

發布時間:2020-06-02 14:15:53 來源:網絡 閱讀:15737 作者:winann 欄目:移動開發

    iOS中的動畫有兩種實現方式,一種是UIView來實現動畫,另一種動畫是通過CALayer來實現,下面介紹兩種動畫的簡單實現:



一、UIView動畫的實現

   UIView使用Context來實現動畫

關鍵代碼:

//參數1 動畫名稱 參數2 要實現動畫的對象上下文
    
    [UIView beginAnimations:@"attribute" context:_showImageView];
    
    //設置動畫的時間
    [UIView setAnimationDuration:1.0f];
    
    //設置動畫延遲時間
//    [UIView setAnimationDelay:2];
    
    //設置視圖center 實現試圖移動動畫
    _showImageView.center = CGPointMake(100, 100);
    
    //設置alpha值:視圖透明度
    _showImageView.alpha = 0.2f;
    
    //設置背景顏色
    _showImageView.backgroundColor = [UIColor greenColor];
    
    //UIView動畫 設置代理
    [UIView setAnimationDelegate:self];
    
    //動畫將要開始代理方法
    [UIView setAnimationWillStartSelector:@selector(animationWillStart:context:)];
    
    //動畫已經結束代理方法
    [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
    
    //提交動畫設置,執行動畫
    [UIView commitAnimations];



使用Block實現的動畫:

//UIView動畫, 使用Block實現
    [UIView animateWithDuration:1.0f animations:^{
        
        //通過設置translation 實現視圖的偏移
        if ([self.mySwitch isOn]) {
            
            //基于上一次的translation
            _showImageView.transform = CGAffineTransformTranslate(_showImageView.transform, 50, 0);
        } else {
            
            //基于原始的translation
            _showImageView.transform = CGAffineTransformMakeTranslation(-50, 0);
        }
    }];



二、CALayer動畫的實現

CABasic動畫的實現:根據初始位置和結束位置確定動畫

//CABasic 有兩個屬性 fromValue 動畫開始值,toValue動畫結束值
    CABasicAnimation *animation1 = [CABasicAnimation animationWithKeyPath:@"position"];
    [animation1 setDuration:2];
    animation1.fromValue = [NSValue valueWithCGPoint:CGPointMake(150, 150)];
    animation1.toValue = [NSValue valueWithCGPoint:CGPointMake(200, 200)];
    [_p_w_picpathView.layer addAnimation:animation1 forKey:@"position"];



創建一組動畫:

//創建組動畫對象
    CAAnimationGroup *group = [CAAnimationGroup animation];
    
    //CABasic動畫
    CABasicAnimation *animation1 = [CABasicAnimation animationWithKeyPath:@"transform.scale.y"];
    animation1.fromValue = @1.5;
    animation1.toValue = @0.5;
    
    //關鍵幀動畫
    CAKeyframeAnimation *animation2 = [CAKeyframeAnimation animationWithKeyPath:@"position"];
    animation2.values = @[[NSValue valueWithCGPoint:CGPointMake(100, 100)],
                         [NSValue valueWithCGPoint:CGPointMake(200, 150)],
                         [NSValue valueWithCGPoint:CGPointMake(100, 200)],
                         [NSValue valueWithCGPoint:CGPointMake(200, 250)]];
    
    //group添加動畫數組,group中動畫對象并發執行
    [group setAnimations:@[animation1, animation2]];
    [group setDuration:4.0f];
    [_p_w_picpathView.layer addAnimation:group forKey:@"group"];




完整的工程和代碼見:https://github.com/winann/iOS-Animation


工程中的動畫實現方法比較全,而且都有注釋,大家可以直接把工程下載下來,邊看邊練習一下。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湘潭县| 乌拉特前旗| 廊坊市| 元氏县| 镶黄旗| 阳高县| 来凤县| 内乡县| 永清县| 修武县| 甘谷县| 建湖县| 西和县| 乌兰察布市| 大方县| 徐汇区| 古蔺县| 类乌齐县| 鄂尔多斯市| 乡城县| 天津市| 丹阳市| 龙海市| 昌乐县| 眉山市| 韶关市| 博兴县| 东宁县| 江城| 思南县| 南京市| 安平县| 荣昌县| 东山县| 嘉峪关市| 永寿县| 永新县| 浪卡子县| 常德市| 昌吉市| 土默特右旗|