UIBezierPath에 많은 (10000+) 줄을 추가하는 루프가 있습니다. 이것은 괜찮은 것처럼 보이지만 일단 베 지어 패스를 시도하고 렌더링하면 장치가 매우 느리게 움직입니다. 내 경로에 너무 많은 행을 추가했기 때문입니까? UIBezierPath에UIBezierPath 경로가 너무 많음 = 너무 느림?
추가 라인 - 단순화 : (이 잘 보인다)
[path moveToPoint:CGPointZero];
for (int i = 0; i < 10000; i++) {
[path addLineToPoint:CGPointMake(i, i)];
}
(롭 제안) BeizerPath 렌더링 -이 느린 것 같다.
- (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+) UIBezierPath를 생성해야한다고 가정합니다. 이렇게하면 장치가 크게 느려지 는가?
3) 어떻게이 문제를 해결할 수 있습니까?
미리 도움을 주셔서 감사합니다.
아, 또 다른 q를 생각해 봅니다 : drawRect에 코드의 드로잉 부분을 포함 시키면 차이가 있습니까? – HHHH
아마도 OpenGL을 사용해보아야할까요? –