2011-08-08 8 views
9

Vì vậy, tôi đã viết một ứng dụng iPhone hoàn hảo tuyệt vời, được thiết kế hoàn hảo để làm giàu, tôi sẽ bị ngập trong các phao và mô hình áo tắm và trực thăng. Tôi muốn kiếm tiền nhiều hơn bằng cách chuyển đổi nó thành một ứng dụng toàn cầu cho cả iPad và iPhone.Thực hành tốt trong thiết kế ứng dụng Universal (iPad/iPhone)

Bây giờ tôi đang làm điều đó, và là lập trình viên lười biếng, tôi đang cố gắng tối đa hóa việc sử dụng lại mã tôi đã viết, tôi thấy mình có thể tái sử dụng hầu hết - chắc chắn là tất cả các mô hình - - nhưng luôn luôn có một số điều nhỏ mà tôi phải sửa đổi trên một lớp điều khiển. Hoặc, có kiểm tra liên tục trên UI_USER_INTERFACE_IDIOM() mà có vẻ như một mùi mã với tôi.

Đồng thời, tôi cho rằng phiên bản iPad không nên là phiên bản iPhone lớn. Một giao diện người dùng khác chắc chắn được bảo đảm cho hầu hết các trường hợp, nhưng sẽ có các điểm mà bạn muốn sử dụng lại một hộp thoại hoặc một hệ thống phân cấp toàn bộ khung nhìn.

Vì vậy, tôi hỏi cộng đồng. Một số phương pháp hay để làm theo để đảm bảo rằng ứng dụng của tôi có thể phổ biến với các chỉnh sửa tối thiểu?

Trả lời

5

Giả sử bạn làm theo các mô hình MVC, M rõ ràng chia sẻ giữa iPhone và iPad (và hầu hết các mối quan hệM⇔C quá).

Giao diện người dùng khác nhau có nghĩa là khác nhau V và khác nhau V⇔C.

Một vài ý tưởng:

  • Nếu bạn đang vào Interface Builder, sử dụng 1 ngòi cho giao diện người dùng iPhone và một số khác cho iPad.

  • Hiểu rõ về chế độ xem 'mặt nạ tự động hóa'. Với giá trị chính xác, bạn thường loại bỏ phần lớn mã bố cục chế độ xem của mình.

  • Nhiều nhất có thể, không sử dụng giá trị tuyệt đối khi định vị thủ công chế độ xem của bạn hoặc vẽ chế độ xem tùy chỉnh. Ví dụ: myView.frame = CGRectMake(0,0, 320, 480) có thể không hoạt động tốt trên iPad.

  • Nếu bạn có mục tiêu phát triển của ít nhất iOS 3.2, hậu tố tài nguyên cụ thể theo thiết bị của bạn với ~ipad hoặc ~iphone. Bạn sẽ có thể nhận được chúng bằng tên chung của chúng.

Ví dụ:
Với AwesomeView~ipad.xibAwesomeView~iphone.xib, bạn có thể viết [[AwesomeViewController alloc] initWithNibName:@"AwesomeView" bundle:nil].
Cùng một điều cho hình ảnh (foo~ipad.pngfoo~iphone.png, sau đó [UIImage imageName:@"foo"])

Tôi chắc rằng hầu hết các điểm là hiển nhiên, nhưng họ đã khá tiết kiệm thời gian cho tôi.

2

Điều tôi thấy là tôi kết thúc với các giao diện người dùng khác nhau đáng kể cho iPhone và iPad cho cùng một ứng dụng. Sự khác biệt về bất động sản trên màn hình và các khía cạnh khác thực sự yêu cầu các cách tiếp cận khác nhau. Nếu không có gì khác tôi kết thúc với ít quan điểm riêng biệt (màn hình) cho iPad hơn cho iPhone. (Tôi thích đi trên chiếc trực thăng bằng cách này).

+1

Đó là những gì tôi sợ: một ứng dụng Universal thực sự là hai ứng dụng được nhồi vào một, chỉ với mô hình giữa chúng, trở thành một cơn ác mộng bảo trì. – ageektrapped