91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

青川县| 门源| 尚义县| 叙永县| 巨鹿县| 青浦区| 茶陵县| 中阳县| 华池县| 广平县| 五大连池市| 霍林郭勒市| 高陵县| 杨浦区| 沙坪坝区| 乐平市| 花莲市| 晴隆县| 任丘市| 九江县| 利川市| 汉川市| 祁东县| 河源市| 贞丰县| 周至县| 金堂县| 金乡县| 克拉玛依市| 五寨县| 阳泉市| 隆德县| 长葛市| 安吉县| 西乌| 九龙坡区| 凤阳县| 怀仁县| 凤冈县| 新乡市| 太保市|