<p id="qitwt"></p>
      1. <object id="qitwt"><strong id="qitwt"></strong></object>
        <p id="qitwt"></p>
        <li id="qitwt"></li>
        <p id="qitwt"><del id="qitwt"><xmp id="qitwt"></xmp></del></p>
        <p id="qitwt"><label id="qitwt"></label></p>
      2. <acronym id="qitwt"></acronym>
        <p id="qitwt"></p>
        免費開源的iOS開發學習平臺

        核心動畫CoreAnimation:7-CAAnimationGroup動畫組

        CAAnimationGroup動畫組,顧名思義就是可以創建一組動畫對象,在動畫播放時,圖層可以同時播放多種動畫的疊加效果,例如,我們可以在圖層平移過程中同時修改圖層的透明度。通過CAAnimationGroup類的對象,我們可以實現復雜動畫的播放效果。

        CAAnimationGroup常用屬性

        在CAAnimationGroup類中,最核心的一個屬性就是animations屬性,這是一個數組,可以在該數組中保存多個動畫對象,例如,可以保存若干個CABasicAnimation對象。

        @property(nullable, copy) NSArray<CAAnimation *> *animations;
        

        CAAnimationGroup代碼示例

        示例代碼中,創建了一個CAAnimationGroup對象,在該動畫組對象中,保存了兩個基本動畫(CABasicAnimation)對象??梢酝瑫r實現對圖層的平移以及修改透明度。

        • 在控制器類中添加一個CALayer類的屬性,作為動畫播放的layer
        @interface ViewController ()
        @property (nonatomic, strong) CALayer *myLayer;
        @end
        
        • 通過懶加載的方式,設置自定義layer的屬性
        -(CALayer *)myLayer{
            if (_myLayer == nil) {
                _myLayer = [CALayer layer];
                _myLayer.frame = CGRectMake(140, 100, 100, 100);
                _myLayer.backgroundColor = [UIColor yellowColor].CGColor;
                _myLayer.borderColor = [UIColor redColor].CGColor;
                _myLayer.borderWidth = 4.0;
                _myLayer.cornerRadius = 2.0;     
            }
            return _myLayer;
        }
        
        • 添加該自定義layer到控制器視圖的layer上
        - (void)viewDidLoad {
            [super viewDidLoad];  
            [self.view.layer addSublayer:self.myLayer];
        }
        
        • 當點擊屏幕時,圖層在平移的過程中,透明度會發生變化。
        -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
            //1.1 實例化CABasicAnimation對象
            CABasicAnimation *animation1 = [CABasicAnimation animation];
            //1.2 設置動畫屬性
            animation1.keyPath = @"transform.translation.x";
            animation1.toValue = @100;
            //2.1 實例化CABasicAnimation對象
            CABasicAnimation *animation2 = [CABasicAnimation animation];
            //2.2 設置動畫屬性
            animation2.keyPath = @"opacity";
            animation2.fromValue = @1.0;
            animation2.toValue = @0.1;
            //3.1 實例化CAAnimationGroup對象
            CAAnimationGroup *animationGroup = [CAAnimationGroup animation];
            //3.2 設置動畫組屬性
            animationGroup.animations = @[animation1,animation2];
            animationGroup.duration = 2.0;
            //4. 添加動畫組對象到一個CALayer類的對象上,播放動畫
            [self.myLayer addAnimation:animationGroup forKey:nil];
        }
        
        

        初始狀態與動畫過程中圖層的樣式對比。

        示例代碼

        https://github.com/99ios/14.4.7


        青青草国产成人久久_jizzjizz日本护士高清_亚洲 另类 国产 另类_99久久免费精品色老
        <p id="qitwt"></p>
          1. <object id="qitwt"><strong id="qitwt"></strong></object>
            <p id="qitwt"></p>
            <li id="qitwt"></li>
            <p id="qitwt"><del id="qitwt"><xmp id="qitwt"></xmp></del></p>
            <p id="qitwt"><label id="qitwt"></label></p>
          2. <acronym id="qitwt"></acronym>
            <p id="qitwt"></p>