如何绘制 wifi 信号脉冲并制作动画

How to Draw and animate the wifi signal pulse

我想绘制一个 wifi 信号脉冲,并想在启动屏幕中用它制作动画。我试过这段代码。信号以向下的字显示,但我需要以向上的字显示。从一点ti开始增加[像我们的phone wifi信号]

 - (void)viewDidLoad
{
[super viewDidLoad];

[self addWavesToView];
[self addAnimationsToLayers];
}

- (void)addWavesToView
 {
    CGRect rect = CGRectMake(0.0f, 0.0f, 300.0f, 300.0f);
    UIBezierPath *circlePath = [UIBezierPath 
    bezierPathWithOvalInRect:rect];

for (NSInteger i = 0; i < 10; ++i) {
    CAShapeLayer *waveLayer = [CAShapeLayer layer];
    waveLayer.bounds = rect;
    waveLayer.position = CGPointMake(100, 100);
    waveLayer.strokeColor = [[UIColor lightGrayColor] CGColor];
    waveLayer.fillColor = [[UIColor clearColor] CGColor];
    waveLayer.lineWidth = 5.0f;
    waveLayer.path = circlePath.CGPath;


    waveLayer.transform = CATransform3DMakeTranslation(0.0f, i*25, 0.0f);
    waveLayer.strokeStart = 0.25- ((i+1) * 0.01f);
    waveLayer.strokeEnd = 0.25+((i+1) * 0.01f);

    [self.view.layer addSublayer:waveLayer];
}
 }

 - (void)addAnimationsToLayers
 {
NSInteger timeOffset = 10;
for (CALayer *layer in self.view.layer.sublayers) {
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"strokeColor"];
    animation.duration = 10.0f;

    // Stagger the animations so they don't begin until the
    // desired time in each
    animation.timeOffset = timeOffset--;
    animation.toValue = (id)[[UIColor lightGrayColor] CGColor];
    animation.fromValue = (id)[[UIColor darkGrayColor] CGColor];

    // Repeat forever
    animation.repeatCount = HUGE_VALF;

    // Run it at 10x. You can adjust this to taste.
    animation.speed = 10;

    // Add to the layer to start the animation
    [layer addAnimation:animation forKey:@"strokeColor"];
}

"show in up words",这会花费更多时间,因此我们可以通过 viewDidLoad() 函数

中的这段代码将基本视图旋转到 180 度
    CGFloat degreesOfRotation = 180.0;
   self.view.transform = CGAffineTransformRotate(self.view.transform,
                                         degreesOfRotation * M_PI/180.0);