Tôi có một UIBezierCurve phức tạp mà tôi cần vẽ một lần với một số tham số dòng cụ thể, sau đó vẽ lại thành lớp phủ với các tham số dòng khác, nhưng tôi cũng cần phần cuối của đường cong ngắn hơn một chút so với trước đó.Tạo bản sao độc lập của UIBezierPath?
Để làm điều này, tôi muốn tạo đường cong bằng cách addLineToPoint:
, moveToPoint:
đến phần cuối cùng, sau đó tạo một bản sao của đường cong này và thêm các đoạn cuối cùng của dòng khác với đường cong gốc và được sao chép. Và sau đó tôi vuốt đường cong gốc và đường cong đã sao chép.
Vấn đề là nó không hoạt động như tôi mong đợi. tôi có thể tạo một bản sao của đường cong theo:
UIBezierPath* copyCurve = [originalCurve copy];
Và các bản vẽ mà tôi làm trong originalCurve sau đó, được áp dụng cũng cho copyCurve, vì vậy tôi không thể làm bản vẽ độc lập cho bất kỳ đường cong này.
Lý do cho kết nối này giữa bản gốc và bản sao là gì và làm cách nào để loại bỏ kết nối đó?
EDIT 1: Một giải pháp mà tôi đã tìm thấy là để tạo ra các bản sao theo cách sau:
UIBezierPath* copyCurve=[UIBezierPath bezierPathWithCGPath:CGPathCreateMutableCopy(originalCurve.CGPath)];
Từ này hoạt động đúng, có lẽ vấn đề là ở tính bất biến của các bản sao tôi nhận được với
[originalCurve copy]
Bạn có 'alloc'/'init 'copyCurve của bạn? – Dustin
Không, chỉ cần những gì được viết trong câu hỏi của tôi ... – BartoNaz