我有一个循环,我在其中向 UIBezierPath 添加了许多(10000+)行。这似乎很好,但是一旦我尝试渲染 bezierpath,我的设备就会变得非常缓慢和生涩。这是因为我在路径中添加了太多行吗?
向 UIBezierPath 添加行 - 简化:(这看起来不错)
[path moveToPoint:CGPointZero];
for (int i = 0; i < 10000; i++ ) {
[path addLineToPoint:CGPointMake(i, i)];
}
渲染 BeizerPath(由 Rob 建议) - 这似乎很慢。
- (void)drawBezierAnimate:(BOOL)animate
{
UIBezierPath *bezierPath = path;
CAShapeLayer *bezier = [[CAShapeLayer alloc] init];
bezier.path = bezierPath.CGPath;
bezier.strokeColor = [UIColor blueColor].CGColor;
bezier.fillColor = [UIColor clearColor].CGColor;
bezier.lineWidth = 2.0;
bezier.strokeStart = 0.0;
bezier.strokeEnd = 1.0;
[self.layer addSublayer:bezier];
if (animate)
{
CABasicAnimation *animateStrokeEnd = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
animateStrokeEnd.duration = 100.0;
animateStrokeEnd.fromValue = [NSNumber numberWithFloat:0.0f];
animateStrokeEnd.toValue = [NSNumber numberWithFloat:1.0f];
[bezier addAnimation:animateStrokeEnd forKey:@"strokeEndAnimation"];
}
}
问:
1)这是因为我添加太多路径太快了吗?
2)我想最终绘制许多不同颜色的不同线条,所以我假设我需要创建多个(10000+)UIBezierPaths - 这会帮助还是大大减慢设备?
3)我将如何解决这个问题?
在此先感谢您的帮助。