Tôi gặp sự cố khi vẽ một cung bên trong hàm vẽ của tôi bên trong lớp con CALayer. Việc thực hiện cho rằng chức năng vẽ là như sau:CGContextAddArc ngược chiều kim đồng hồ thay vì theo chiều kim đồng hồ
-(void)drawInContext:(CGContextRef)ctx
{
CGPoint center = CGPointMake(self.bounds.size.width/2, self.bounds.size.height/2);
CGFloat radius = MIN(center.x, center.y);
CGContextBeginPath(ctx);
CGContextAddArc(ctx, center.x, center.y, radius, DEG2RAD(0), DEG2RAD(90), YES);
CGContextSetStrokeColorWithColor(ctx, [UIColor whiteColor].CGColor);
CGContextSetLineWidth(ctx, 5);
CGContextDrawPath(ctx, kCGPathStroke);
}
Không có gì quá đột phá ở đây, nhưng điều kỳ lạ là nó vẽ arc ngược mặc dù tôi đã xác định rằng nó shoud được chiều kim đồng hồ. Ngược lại, khi tôi chỉ định NO cho tham số chiều kim đồng hồ, nó vẽ vòng cung theo chiều kim đồng hồ. Tôi đã thực hiện một số nghiên cứu về các hệ tọa độ lộn xộn và tìm ra rằng đây có thể là vấn đề ở đây, nhưng tôi không muốn chỉ mã hóa tham số bool đối diện với ý tôi. Bất kỳ đề xuất về làm thế nào để sửa lỗi này?
Cảm ơn!
Cảm ơn bạn đã phản hồi và giải thích siêu nhanh! Tôi đã thử thêm mã mà bạn đã đăng và hiện đang vẽ theo chiều kim đồng hồ như mong đợi nhưng thay vì vẽ một góc phần tư (góc phần tư bên phải thấp hơn của vòng tròn như mong đợi trong khoảng 0-90 độ), nó vẽ khoảng 0-270 theo chiều kim đồng hồ. Bất kỳ ý tưởng tại sao? –
Tôi vừa thử điều này, và nó vẽ 3/4 vòng tròn từ phía đông (0 độ) theo chiều kim đồng hồ đến phía bắc (90 độ). Nếu bạn muốn góc phần tư dưới bên phải của hình tròn, nó phải từ 0 độ đến 270 độ (do nam) theo chiều kim đồng hồ. Tham số chiều kim đồng hồ không thay đổi cách các góc được diễn giải, chỉ có "một nửa" của vòng tròn được vẽ. –
Oh okay Tôi nghĩ rằng tôi hiểu tại sao đó là ... bằng cách lật chuyển đổi các vị trí 90 và 270 độ được đổi chỗ và x được trái một mình. Xin lỗi vì điều đó. –