2011-08-27 12 views
5

Tôi mới làm quen với Cocoa và tìm kiếm một lời khuyên nhỏ cho một ứng dụng từ những người có kinh nghiệm Cocoa.Lời khuyên dành cho ứng dụng vẽ cacao

Tôi đang xây dựng một ứng dụng kiểu OmniGraffle cơ bản, nơi các đối tượng được vẽ/kéo vào canvas. Sau khi các đối tượng trên canvas, chúng có thể được chọn để sửa đổi các thuộc tính của chúng (màu tô, màu nét/chiều rộng, vv ..), được thay đổi kích thước, di chuyển đến vị trí mới, v.v.

Để làm ấm, Tôi đã viết một ứng dụng vẽ cơ bản tạo đối tượng (hình tròn, hình chữ nhật, v.v.) được vẽ bằng chuột trên một tùy chỉnh NSView, thêm các đối tượng vào bộ sưu tập NSArray và hiển thị nội dung của bộ sưu tập vào chế độ xem. Tôi có thể tiếp tục trong tĩnh mạch này, nhưng tôi sẽ phải thêm hỗ trợ để phát hiện lựa chọn đối tượng, giải quyết lập chỉ mục z, làm nổi bật tiêu điểm, kéo tay cầm, v.v. với tất cả các kết xuất được kết hợp. Ngoài ra, hiển thị mọi đối tượng trên mỗi chu kỳ có vẻ lãng phí khủng khiếp. Có vẻ như cách tiếp cận tốt hơn là thả các đối tượng xem nhẹ vào một khung hình có thể phát hiện các sự kiện chuột trên bản thân, vẽ bản thân và các vòng lấy nét của chúng, v.v. Tuy nhiên, trong khi NSView có vẻ giống như một đối tượng với các thuộc tính này, tôi thấy rất nhiều trò chuyện trên web về nó là một thành phần nặng với rất nhiều hành lý. Tôi đã tình cờ gặp NSCell và đã đọc trên chúng, nhưng tôi không chắc liệu chúng có phải là phương án phù hợp hay không.

Mọi đề xuất? Nếu bạn có thể đưa tôi đi đúng hướng, tôi sẽ đánh giá cao nó.

+0

Tôi chắc chắn sẽ khuyên bạn không nên sử dụng 'NSCell'. Ngay cả 'NSTableView' đã chuyển đi khỏi nó trong lần lặp mới nhất của nó. 'NSCell' không thú vị khi làm việc. –

+1

Tôi cũng * rất cao * khuyên bạn nên xem ví dụ Sketch (Tôi nghĩ rằng hiện tại được gọi là "Sketch + Accessibility" nếu bạn tìm kiếm tài liệu) nếu bạn chưa có. Có rất nhiều ý tưởng hay trong đó. –

Trả lời

3

Quy tắc tối ưu hóa đầu tiên: Đừng làm điều đó trước tiên.

NSView tùy chỉnh cho mỗi hình dạng có vẻ phù hợp với tôi. Cho dù bạn sẽ muốn các lớp con khác nhau cho các hình dạng khác nhau sẽ tùy thuộc vào bạn; Tôi bắt đầu với một lớp hình dạng và hình dạng nhìn chung có thể tự mô tả mình là con đường Bézier, nhưng đừng quá khắt khe về việc giữ nó - thay đổi nó nếu nó làm cho nó dễ dàng hơn. Chỉ cần thực hiện nó tuy nhiên nó có ý nghĩa với bạn.

Sau đó, khi bạn đã làm việc, hãy lập hồ sơ. Làm nhiều hình dạng nhất có thể. Sau đó làm nhiều hơn. Hình dạng có số lượng cao. Giao lộ. Điền, nét, bóng và độ dốc. Bạn có lẽ nên tạo một tài liệu riêng biệt cho mỗi người gây stress. Thông báo ngay ở cấp độ người dùng chậm. Sau đó, chạy ứng dụng của bạn trong Công cụ và tìm hiểu lý do tại sao ứng dụng đó chậm.

Có thể lượt xem sẽ trở thành giải pháp sai. Đừng quên nhìn vào CALayers. Nhưng không loại trừ bất cứ điều gì ra như chậm cho đến khi bạn đã thử nó và đo nó.

+0

Vâng, tất cả phụ thuộc vào trường hợp sử dụng điển hình - nếu ứng dụng được mong đợi thường xử lý hàng nghìn đối tượng tôi muốn tránh xa việc sử dụng hàng nghìn phiên bản NSView và chọn một thiết kế trả trước khác. – Jay