音量振動(dòng)條
如果實(shí)現(xiàn)帽揪?
創(chuàng)建3個(gè)layer,按順序播放y軸縮放動(dòng)畫
利用CAReplicatorLayer實(shí)現(xiàn)
1、什么是CAReplicatorLayer疾掰?
一種可以復(fù)制自己子層的layer,并且復(fù)制出來的layer和原生子層有同樣的屬性,位置徐紧,形變静檬,動(dòng)畫。
2并级、CAReplicatorLayer屬性
-
instanceCount
: 子層總數(shù)(包括原生子層) -
instanceDelay
: 復(fù)制子層動(dòng)畫延遲時(shí)長 -
instanceTransform
: 復(fù)制子層形變(不包括原生子層)拂檩,每個(gè)復(fù)制子層都是相對上一個(gè)。 -
instanceColor
: 子層顏色嘲碧,會和原生子層背景色沖突稻励,因此二者選其一設(shè)置。 -
instanceRedOffset愈涩、instanceGreenOffset望抽、instanceBlueOffset、instanceAlphaOffset
: 顏色通道偏移量履婉,每個(gè)復(fù)制子層都是相對上一個(gè)的偏移量煤篙。
如果利用CAReplicatorLayer實(shí)現(xiàn)
1.首先創(chuàng)建復(fù)制layer,音樂振動(dòng)條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è)音量振動(dòng)條辑奈,并且設(shè)置好動(dòng)畫,動(dòng)畫是繞著底部縮放,設(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ù)制子層的延遲動(dòng)畫時(shí)長
layer.instanceDelay = 0.3;