簡易音量振幅條的實現

音量gif.gif

如果實現?

創建3個layer,按順序播放y軸縮放動畫

利用CAReplicatorLayer實現

1、什么是CAReplicatorLayer?

一種可以復制自己子層的layer,并且復制出來的layer和原生子層有同樣的屬性,位置,形變,動畫。

2、CAReplicatorLayer屬性

  • instanceCount: 子層總數(包括原生子層)
  • instanceDelay: 復制子層動畫延遲時長
  • instanceTransform: 復制子層形變(不包括原生子層),每個復制子層都是相對上一個。
  • instanceColor: 子層顏色,會和原生子層背景色沖突,因此二者選其一設置。
  • instanceRedOffset、instanceGreenOffset、instanceBlueOffset、instanceAlphaOffset: 顏色通道偏移量,每個復制子層都是相對上一個的偏移量。

如果利用CAReplicatorLayer實現

1.首先創建復制layer,音樂振動條layer添加到復制layer上,然后復制子層就好了。

CAReplicatorLayer *layer = [CAReplicatorLayer layer];

    layer.frame = CGRectMake(50, 50, 200, 200);

    layer.backgroundColor = [UIColor lightGrayColor].CGColor;

    [self.view.layer addSublayer:layer];

2.先創建一個音量振動條,并且設置好動畫,動畫是繞著底部縮放,設置錨點

    CALayer *bar = [CALayer layer];

    bar.backgroundColor = [UIColor redColor].CGColor;

    bar.bounds = CGRectMake(0, 0, 30, 100);

    bar.position = CGPointMake(15, 200);

    bar.anchorPoint = CGPointMake(0.5, 1);

    [layer addSublayer:bar];

    CABasicAnimation *anim = [CABasicAnimation animation];

    anim.keyPath = @"transform.scale.y";

    anim.toValue = @(0.1);

    anim.autoreverses = YES;

    anim.repeatCount = MAXFLOAT;

    [bar addAnimation:anim forKey:nil];

3.復制子層

    // 設置4個子層,3個復制層
    layer.instanceCount = 4;

    // 設置復制子層的相對位置,每個x軸相差40
    layer.instanceTransform = CATransform3DMakeTranslation(40, 0, 0);

    // 設置復制子層的延遲動畫時長
    layer.instanceDelay = 0.3;
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Core Animation Core Animation,中文翻譯為核心動畫,它是一組非常強大的動畫處理API,...
    45b645c5912e閱讀 3,056評論 0 21
  • 圖片折疊效果 1.如何制作圖片折疊效果? `把一張圖片分成兩部分顯示,上面一部分,下面一部分,折疊上面部分的內容。...
    Hevin_Chen閱讀 506評論 0 1
  • 在iOS中隨處都可以看到絢麗的動畫效果,實現這些動畫的過程并不復雜,今天將帶大家一窺ios動畫全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,572評論 6 30
  • 在iOS中隨處都可以看到絢麗的動畫效果,實現這些動畫的過程并不復雜,今天將帶大家一窺iOS動畫全貌。在這里你可以看...
    F麥子閱讀 5,141評論 5 13
  • 目錄: 主要繪圖框架介紹 CALayer 繪圖 貝塞爾曲線-UIBezierPath CALayer子類 補充:i...
    Ryan___閱讀 1,708評論 1 9