iOS動畫來模擬音量振動條,即利用CAReplicatorLayer實(shí)現(xiàn),以下將詳細(xì)的介紹CAReplicatorLayer和實(shí)現(xiàn)方法。
音量振動條
效果圖:
如何實(shí)現(xiàn)?
創(chuàng)建3個(gè)layer,按順序播放y軸縮放動畫
利用CAReplicatorLayer實(shí)現(xiàn)
1、什么是CAReplicatorLayer?
一種可以復(fù)制自己子層的layer,并且復(fù)制出來的layer和原生子層有同樣的屬性,位置,形變,動畫。
2、CAReplicatorLayer屬性
1.首先創(chuàng)建復(fù)制layer,音樂振動條layer添加到復(fù)制layer上,然后復(fù)制子層就好了。
CAReplicatorLayer *layer = [CAReplicatorLayer layer]; layer.frame = CGRectMake(50, 50, 200, 200); layer.backgroundColor = [UIColor lightGrayColor].CGColor; [self.view.layer addSublayer:layer];
2.先創(chuàng)建一個(gè)音量振動條,并且設(shè)置好動畫,動畫是繞著底部縮放,設(shè)置錨點(diǎn)
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.復(fù)制子層
// 設(shè)置4個(gè)子層,3個(gè)復(fù)制層 layer.instanceCount = 4; // 設(shè)置復(fù)制子層的相對位置,每個(gè)x軸相差40 layer.instanceTransform = CATransform3DMakeTranslation(40, 0, 0); // 設(shè)置復(fù)制子層的延遲動畫時(shí)長 layer.instanceDelay = 0.3;
通過以上對CAReplicatorLayer的介紹以及利用CAReplicatorLayer來實(shí)現(xiàn)模擬音量振動條的實(shí)例的演示,希望對大家有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選