2010-02-13 21 views
12

Tôi đến từ nền tảng lập trình Windows khi viết các công cụ, nhưng đã lập trình sử dụng Carbon và Ca cao trong năm qua. Tôi đã giới thiệu bản thân mình với Mac bởi, tôi thừa nhận nó, ẩn từ lập trình UI. Tôi đã cơ bản wapping mã OpenGL của tôi trong một cái nhìn, sau đó ở trong vùng thoải mái của tôi bằng cách sử dụng nền tảng OpenGL C++ mã bất khả tri của tôi như bình thường.Tư vấn docking cửa sổ cho Mac

Tuy nhiên, bây giờ tôi muốn bắt đầu chuyển một trong những ứng dụng phức tạp hơn của tôi sang Mac OS.

Thông thường tôi sử dụng phương pháp tiếp cận MDI tiêu chuẩn của Visual Studio, rất tuyệt vời, nhưng rất giống với Windows. Từ việc sử dụng máy Mac chủ yếu bây giờ trong một thời gian, tôi không có xu hướng thấy loại phương thức này được sử dụng cho giao diện người dùng Mac. Ngay cả Xcode cũng không hỗ trợ ý tưởng về các giao diện kéo và thả/cập nhật. Tôi nhìn thấy docked xem với tấm splitter, nhưng đó là về nó.

Điều gần nhất mà tôi đã thấy với phương pháp Visual Studio là Photoshop CS4, điều này khá hay.

Vậy sự đồng thuận chung về điều này là gì? Có cách nào giống như Mac để đạt được điều tương tự mà tôi chưa từng thấy? Nếu không, tôi vui khi viết một người quản lý cửa sổ ở Cocoa bản thân mình, để cuối cùng tôi có thể nghiên cứu về những gì trông giống như một API tuyệt vời.

Lưu ý, tôi không muốn sử dụng QT hoặc bất kỳ thư viện đa nền tảng nào khác. Toàn bộ vấn đề là tôi muốn tạo một ứng dụng Mac trông giống như một ứng dụng Mac, hãy để ứng dụng Windows trông giống như một ứng dụng Windows. Tôi luôn luôn tìm thấy các thư viện đa nền tảng có xu hướng mất hiệu ứng này, và khi tôi nhìn thấy một giao diện người dùng Mac bản địa, với sự chuyển tiếp và hình ảnh động ưa thích của Cocoa, tôi luôn luôn mỉm cười. Nó cũng là một lý do tốt cho tôi để học Cocoa.

Điều đó đang được nói, nếu có thư viện Cocoa nguồn mở để làm điều này, tôi rất muốn biết về điều đó! Tôi rất muốn xem làm thế nào người khác đạt được điều này, và sẽ giúp làm mịn đường cong học tập Cocoa.

Chúc mừng,

Shane

CẬP NHẬT: Tôi quên đề cập đến một điểm quan trọng. Tôi hỗ trợ các plugin, có thể có giao diện người dùng riêng để hiển thị các thông tin cụ thể về plugin khác nhau. Tôi không biết plugin nào sẽ được tải và tôi không biết giao diện người dùng của họ sẽ sống ở đâu, nếu tôi không hỗ trợ kết nối. Tôi muốn nghe suy nghĩ của mọi người về điều này, cụ thể: Làm cách nào để hỗ trợ kiến ​​trúc chế độ xem plugin, nếu giao diện người dùng không thể thay đổi? Tôi đặt chế độ xem plugin ở đâu?

+3

Xin đừng nhầm lẫn với "câu trả lời" dưới đây. Các cửa sổ có thể gắn trên máy Mac đã tồn tại trong một thời gian dài. (Cả Adobe và Google đều làm cho các ứng dụng có cửa sổ có thể gắn kết, nhưng bạn không thể làm điều đó? Đó là sự cố.) Vấn đề thực sự là không có hàng trăm công ty làm cho các thành phần của bên thứ ba cho Mac giống như dành cho Windows. Dưới đây là một bài viết và một số mã có thể giúp bạn bắt đầu với các bảng màu có thể gắn trên OS X - http://apptree.net/dockables.htm –

+0

Vâng, tôi nghĩ nơi cần có các cửa sổ có thể gắn được, chúng rất khó để đánh bại. Một ví dụ cổ điển là Eclipse vs XCode (4). Tôi có thể đặt các cửa sổ bất cứ nơi nào tôi muốn trong Eclipse, trong khi tôi đang bị hấp dẫn trong XCode. Cảm ơn bạn đã liên kết, tôi sẽ kiểm tra. – Shane

Trả lời

10

Đến từ nền Windows, bạn cảm thấy cần phải có cửa sổ lắp ghép nhưng thực sự cần thiết cho ứng dụng? Triết lý của Apple (theo ý kiến ​​của tôi) là nhà thiết kế biết rõ hơn người dùng nên mọi thứ trông như thế nào và hoạt động như thế nào. Ví dụ, iTunes là một ứng dụng khá tinh vi, nhưng nó không cho phép bạn thay đổi giao diện người dùng xung quanh, thay đổi làn da, vv, bởi vì Apple muốn giữ cho nó phù hợp. Họ cung cấp chế độ xem đầy đủ, trình phát mini và một số tùy chọn xem khác nhau, nhưng chúng không cho phép bạn kéo danh sách nguồn ra khỏi cửa sổ riêng hoặc gắn nó ở các vị trí khác. Họ nghĩ rằng nó nên ở bên trái, do đó, nó sẽ ở bên trái, vì vậy nó sẽ ở lại ...

Bạn đã nói "muốn tạo một ứng dụng Mac trông giống như một ứng dụng Mac", và như bạn đã chỉ ra, các ứng dụng Mac không có xu hướng có cửa sổ lắp ghép. Do đó, việc triển khai các cửa sổ lắp ghép của riêng bạn có thể là một bước sai hướng;)

+4

Hoàn toàn đồng ý với điều này. Thêm: Bộ phần mềm mới nhất của Adobe là một ví dụ điển hình về một ý tưởng khủng khiếp trên nền tảng Mac OS X. :-) –

+0

Câu trả lời tuyệt vời Ken, và thành thật mà nói, tôi có cảm giác đây là những gì tôi sẽ nghe! Tôi nghĩ bạn nói đúng, tôi sẽ thiết kế vì vậy tôi chủ yếu là tĩnh, tuy nhiên tôi sẽ đảm bảo rằng tôi bao gồm những người mà công cụ này dành cho quá trình thiết kế, bởi vì các lập trình viên nổi tiếng là nhà thiết kế xấu (tôi có thể nói rằng Bây giờ, vấn đề đầu tiên tôi sẽ gặp phải với phương pháp này là, làm cách nào để xử lý kiến ​​trúc plugin của tôi, nơi plugin có thể có chế độ xem riêng của họ, nếu giao diện người dùng chủ yếu là cố định. Mọi người làm gì trong trường hợp này? Ứng dụng Mac nào là ví dụ hay về điều này? – Shane

+2

Đối với kiến ​​trúc trình cắm thêm hỗ trợ do Apple cung cấp với giao diện người dùng, hãy xem cách đơn vị âm thanh được xử lý. Nhìn vào AULab trong/Developer/Applications/Audio /. Tôi sẽ không gọi AULab là một ví dụ về thiết kế giao diện người dùng tuyệt vời, nhưng nó đáng xem. Những gì họ làm trong đó là mở một cửa sổ nổi mới (NSPanel) để hiển thị giao diện người dùng cho mỗi đơn vị âm thanh. Chiều cao cửa sổ được thay đổi kích thước khi cần thiết. Interface Builder làm một cái gì đó tương tự với tab thanh tra, cho phép chiều cao thay đổi nhưng hạn chế chiều rộng để hiển thị giao diện người dùng duy nhất của mỗi lớp. –

2

+1 cho câu trả lời của Ken.

Từ góc độ người dùng trừ khi không thể tách rời ứng dụng giống như trong Adobe CS hoặc Eclipse, tôi muốn mọi thứ càng ngắn càng tốt và tất cả các tùy chọn và hiển thị khác nhau để tôi có thể tập trung vào tài liệu.

Tôi nghĩ bạn sẽ tìm thấy với người dùng mac rằng những người có "kỹ năng người dùng" để sử dụng sắp xếp lại bảng sẽ trong hầu hết các trường hợp chọn liên kết khóa nóng thay thế và những người không có cấp độ "kỹ năng" đó chỉ gây nhầm lẫn.

Tôi khuyên bạn nên giữ đơn giản nhất có thể.

1

(chạy trong chuyển động chậm, vươn ra trong hoảng loạn) Nnnnnoooooooo !!!!!

:-) Nghiêm túc, như tôi đã đề cập trong trả lời câu trả lời tuyệt vời của Ken, cố gắng ép buộc "Windowsism" trên giao diện người dùng OS X chắc chắn là một ý tưởng tồi. Theo tôi, vấn đề lớn nhất với giao diện người dùng Windows là các nhà phát triển bên thứ ba phát minh ra các cách thức mới và không nhất quán trong việc trình bày giao diện người dùng, thay vì tuân theo các quy ước được thiết lập và tuân theo. Đối với người dùng Mac, đó là dấu hiệu của một ứng dụng khủng khiếp. Đó là cách đó vì một lý do.

Tôi khuyến khích bạn suy nghĩ lại về việc triển khai UIứng dụng của bạn từ đầu với Mac OS. Nếu bạn đã hoàn thành tốt công việc của mình, kiến ​​trúc và mô hình (thực hiện theo nền tảng cụ thể) nên dịch rõ ràng sang bất kỳ nền tảng nào.

Về mặt giao diện người dùng, bạn đã sử dụng máy Mac trong một năm, vì vậy bạn nên có ý tưởng khá hay về "tiêu chuẩn". Nếu bạn có nghi ngờ, tốt nhất là đăng câu hỏi cụ thể chi tiết những gì bạn cần trình bày và suy nghĩ của bạn về cách bạn có thể làm điều đó (hoặc hỏi làm thế nào nếu bạn không có ý tưởng).

Chỉ cần không giật ứng dụng của bạn bằng thanh xấu bằng cách buộc ứng dụng hoạt động như thể nó đang chạy trong Windows khi rõ ràng là không. Đó là nụ hôn của cái chết cho một ứng dụng cho người dùng Mac.

+0

Tôi đồng ý, đó chính là lý do tại sao tôi đăng câu hỏi này. :) Tôi là một anh chàng Windows đang cố gắng làm 'điều đúng' cho người Mac, trong đó tôi là người tốt và thực sự bây giờ. – Shane

+0

Chào mừng bạn lên tàu. ;-) –

+0

Cảm ơn, tôi là một người hạnh phúc hơn cho nó :) – Shane

2

Một điều phổ biến trong nhiều ứng dụng Mac là khả năng ẩn tất cả chrome và tập trung vào nội dung của bạn. Đó là điểm đằng sau điều khiển thanh công cụ "tic tac" ở góc trên cùng bên phải của nhiều cửa sổ. Điểm yếu nghiêm trọng của nhiều giao diện người dùng là họ hy vọng bạn có cửa sổ chiếm hầu hết màn hình, vì các bảng được gắn đế có thể che khuất nội dung. Ngay cả khi các tấm được gắn vào có thể thu gọn lại, không gian còn lại của chúng thường chỉ lãng phí và đầy không gian màu trắng. Vì vậy, nếu bạn xây dựng một bảng điều khiển docking vào giao diện của bạn, bạn nên mong đợi nó được hiển thị hầu hết thời gian. Ví dụ, danh sách nguồn của iTunes được thiết kế rõ ràng để hiển thị mọi lúc, nhưng bạn có thể bấm đúp vào một danh sách phát để mở nó trong một cửa sổ mới.

Để làm quen với phạm vi điều khiển Mac, tôi khuyên bạn nên thử thực hiện một số công việc nghiêm túc với một số ứng dụng không có giao diện người dùng đa nền tảng; ví dụ: ứng dụng iWork, Trình tạo giao diện hoặc Xem trước. Hãy lưu ý nơi điều khiển xuất hiện và tại sao - trong thanh công cụ, trong thanh đáy, trong thanh tra, trong danh sách nguồn/thanh bên, trong các bảng như Thư viện IB hoặc bảng Phông chữ và Màu, trong HUD theo ngữ cảnh. Đừng quên thanh trình đơn. Có được một ý tưởng về cảm giác của các điều khiển — sự đáp ứng, phương thức, kích thước, phân nhóm và nhất quán của chúng. Cố gắng phát triển một số hương vị - không phải mọi thứ đều hoàn hảo; chỉ cần thử iCal nếu bạn muốn có một cái gì đó để làm cho niềm vui của.

Lưu ý rằng không có "một kích thước phù hợp với tất cả" cho các điều khiển, đây có thể là vấn đề với giao diện người dùng docking. Điều quan trọng là phải suy nghĩ về quy trình làm việc: mức độ thường xuyên sử dụng điều khiển, cho dù bạn có thể thay thế nó bằng thao tác trực tiếp hay không, cho dù chỉ báo có thể nhìn thấy trạng thái của nó là cần thiết, cho dù nó có thể hoạt động được từ bàn phím và chuột khi thích hợp, v.v. Tìm hiểu cách vị trí và hành vi của kiểm soát cho phép người dùng hoạt động hiệu quả hơn.

Ví dụ đơn giản về vị trí kiểm soát tốt so với hành vi xấu và ứng dụng trong các ứng dụng khác, so sánh mặt nạ hình ảnh trong OmniGraffle và Keynote. Trong OmniGraffle, điều này sử dụng trình kiểm tra hình ảnh, nơi bạn phải nhấp vào nút không có nhãn ("Kích thước tự nhiên") để bật các điều khiển thích hợp, sau đó điều chỉnh kích thước và vị trí trong thời trang có độ trung thực thấp với hình thu nhỏ hoặc nhập tỷ lệ phần trăm vào các trường. Cố gắng thay đổi kích cỡ khung hình trực tiếp ứng xử theo kiểu kỳ quái và phản trực giác.

Trong Keynote, mặt nạ bắt đầu bằng mục menu hoặc mục thanh công cụ có tên hợp lý, sử dụng HUD bật lên ngay lập tức bạn nhấp vào hình ảnh có mặt nạ và cho phép thao tác trực tiếp bao gồm hiển thị hợp lý mức độ của hình ảnh bạn ' mặt nạ lại. Trong khi bạn đang kéo một hình ảnh đeo mặt nạ xung quanh, nó thậm chí còn theo các hướng dẫn. Người dùng cấp cao có thể bỏ qua toàn bộ HUD, chỉ cần nhấp đúp vào hình ảnh để chuyển đổi chỉnh sửa mặt nạ và sử dụng các chốt để định kích thước. Nó sẽ dễ thấy, với một vài cảnh báo (ví dụ trạng thái của chế độ "Chỉnh sửa mặt nạ" sẽ hiển thị trong HUD thay vì chỉ từ hình ảnh; đường viền ngoài của hình ảnh bạn đang che mặt nên được sử dụng hiệu quả hơn) Keynote là tốt hơn đáng kể ở đây, một phần vì nó không sử dụng một thanh tra.

Điều đó nói rằng, nếu bạn có một số lượng lớn các tùy chọn và bố cục thanh tra theo tiêu chuẩn tab không hoạt động cho bạn, hãy kiểm tra khuôn khổ OmniInspector của Omni Group. Hãy thử sử dụng nó cho tốt, và hy vọng bạn sẽ tìm ra cách để ám ảnh về giao diện người dùng nhiều như bạn làm trên đồ họa bây giờ :-)

+0

Cảm ơn Nicholas, tất cả các điểm tốt (nhờ liên kết Omni Group quá, rất thú vị). Ngoài quan tâm, bạn đã thấy ứng dụng nào khác trên Mac hỗ trợ plugin bằng giao diện người dùng của riêng họ? – Shane