Ich ändere CAShapeLayer 's Pfad in for
Schleife, aber es zeigt nur das letzte Ergebnis der Schleife. Ich weiß, dass ich das mit CABasicAnimation tun kann, aber ich muss den Weg auf diese Weise ändern. Irgendwelche Ideen, wie man das macht?Das Ändern des Pfads von CAShapeLayer in for-Schleife macht keinen Effekt
UIBezierPath *path = [ShapeManager getCirclePathAppendedWithCirclePathWithRadius:radius
andFrame:self.view.bounds];
self.layer.fillRule = kCAFillRuleEvenOdd;
self.layer.fillColor = [UIColor grayColor].CGColor;
self.layer.opacity = 0.5;
self.layer.path = path.CGPath;
[self.view.layer addSublayer:self.layer];
for (int i = 1; i < 100; ++i) {
path = [ShapeManager getCirclePathAppendedWithCirclePathWithRadius:self.view.bounds.size.width-i
andFrame:self.view.bounds];
self.layer.path = path.CGPath;
}
Hilfsmethoden
+ (UIBezierPath *)getCirclePathAppendedWithCirclePathWithRadius:(CGFloat)radius andFrame:(CGRect)frame {
UIBezierPath *backgroundPath = [UIBezierPath bezierPathWithRect:frame];
[backgroundPath appendPath:[self getCirclePathWithRadius:radius andFrame:frame]];
return backgroundPath;
}
+ (UIBezierPath *)getCirclePathWithRadius:(CGFloat)radius andFrame:(CGRect)frame {
CGRect rect = frame;
UIBezierPath *circlePath;
circlePath = [UIBezierPath bezierPathWithArcCenter:(CGPoint){rect.size.width/2, rect.size.height/2} radius:radius startAngle:0 endAngle:M_PI*2 clockwise:YES];
return circlePath;
}
Was werden Sie mit dieser for-Schleife erreichen? Es wird nichts animieren. Wenn Sie eine Variable millionenfach setzen, haben Sie am Ende nur den letzten Wert, oder? Das gleiche hier – alexburtnik
ich versuche, das Layout abhängig von einer Geräteposition (mit CoreMotion) zu zeichnen. – passingnil