Tôi đang viết một ứng dụng sử dụng ngón tay của bạn để vẽ các biểu đồ đơn giản. Tôi có nó làm việc cho hầu hết các phần nhưng bây giờ tôi đang cố gắng tối ưu hóa hiệu suất của nó. Khi người dùng vuốt nhanh ngón tay của họ, tôi không thể chụp đủ các sự kiện chạm để vẽ một đường trơn tru.Tối ưu hóa ứng dụng vẽ (có chạm ngón tay) cho iPhone SDK
Dưới đây là cách tiếp cận hiện tại của tôi:
1) Tôi subclassed một UIView và thêm một poroperty đến một CGLayer (được tạo ra một cách lười biếng và có kích thước tương tự như UIView của tôi). 2) Lớp con UIView của tôi phản hồi các sự kiện chạm bằng cách lưu trữ các điểm tiếp xúc hiện tại và cuối cùng trong các biến mẫu. 3) Chế độ xem của tôiNếu màn hình được gọi và trong chế độ hòa âm, hãy thực hiện theo các bước sau: - vẽ một đường từ vị trí cảm ứng trước đó đến vị trí cảm ứng hiện tại tới CGLayer - vẽ toàn bộ CGLayer vào ngữ cảnh của tôi trong một lần
Vấn đề chính là khi người dùng lướt nhanh, tôi nhận được ít sự kiện liên lạc, vì vậy các đường tôi vẽ giữa các lần chạm dài và làm cho đường đi trông lởm chởm không mượt mà.
Câu hỏi của tôi:
1) Liệu drawRect (trên phân lớp UIView của tôi) và xử lý sự kiện liên lạc của tôi trên phân lớp UIView của tôi được gọi trong cùng một thread? I E. Tôi có thể có chủ đề thực hiện (một trong một sự kiện liên lạc và thứ hai trong rect vẽ của tôi)?
Nếu các sự kiện liên lạc không thực hiện được xếp hàng đợi trong khi drawRect đang được gọi? Và làm cách nào để cải thiện hiệu suất - chỉ cần cải thiện hiệu suất của drawRect?
Nếu có - làm thế nào tôi có thể nhận được nhiều sự kiện chạm để xảy ra để tôi có thể vẽ một con đường mượt mà hơn?
Cảm ơn.
Vì vậy, cả trình xử lý sự kiện drawRect và cảm ứng của tôi đều được gọi trên chuỗi chính? Bạn có gợi ý rằng mỗi khi sự kiện chạm xảy ra, tôi nên bắt đầu một chuỗi mới và vẽ bản vẽ của tôi trong chuỗi đó? – aloo
Tôi đang đề xuất có ** một ** chuỗi công nhân. Nó bắt đầu vẽ bất cứ khi nào nó được hoàn thành với cái cũ và ít nhất một chạm mới có sẵn. –