2014-10-14 16 views
6

Tôi có một dự án cho iPhone và iPad. IPad cần một bộ điều khiển chia tách. Chúng ta có tạo hai bảng phân cảnh riêng biệt không? Một cho iPhone (sử dụng autolayout chúng tôi có thể hỗ trợ tất cả các thiết bị) và hai cho iPad. Nghi ngờ của tôi là sự khác biệt nó chỉ trong quan điểm ban đầu. Các khung nhìn bên trong lặp lại. Cách tiếp cận của bạn với bảng phân cảnh như thế nào?Chúng ta có cần sử dụng 2 Storyboard cho ứng dụng Universal không?

Trả lời

14

Không cần hai bảng phân cảnh nữa trong iOS 8! Chúng tôi có thể sử dụng Giao diện người dùng thích ứng để điều chỉnh cùng một bảng phân cảnh tất cả các kích thước khác nhau của iPad và iPhone.

Bạn có thể tìm thấy một hướng dẫn ngơi thoải mái tại đây http://www.raywenderlich.com/83276/beginning-adaptive-layout-tutorial

Và bạn cũng có thể tìm thấy một video đẹp bằng quả táo trong WWDC hội nghị here và tìm kiếm cho "xây dựng thích ứng Apps với UIKit"

Về cơ bản chúng ta có thể xử lý khác nhau kích thước màn hình bằng cách xác định các phần tử của giao diện người dùng trong bảng phân cảnh cho các lớp kích thước khác nhau. Chúng tôi cũng có thể xác định các ràng buộc bố cục tự động khác nhau cho các lớp kích thước khác nhau.

Và đây là tất cả các lớp học quy mô càng tốt trong iOS 8 (Tôi đã lấy hình ảnh từ https://medium.com/@getaaron/ios-8-development-tips-for-iphone-6-and-iwatch-1c772554ffe0)

enter image description here

+0

Cảm ơn bạn đã liên kết! –

1

Trên iOS 8, bạn không cần hai storyboards từ một kịch bản duy nhất có thể xử lý cả iPhone và iPad; UISplitViewController cũng được hỗ trợ trên điện thoại trên hệ điều hành đó.

Đối với các phiên bản iOS cũ hơn, bạn sẽ cần hai bảng phân cảnh.

6

Đối với iOS 7 và trước đó, có, sử dụng hai bảng phân cảnh và hai giao diện hoàn toàn khác nhau, vì không có bộ điều khiển chế độ xem chia tách trên iPhone.

Đối với iOS 8, sử dụng một bảng phân cảnh và sử dụng UISplitViewController trên cả iPad và iPhone. Tạo một dự án mới từ phiên bản Universal của mẫu ứng dụng Xcode 6 Master-Detail để xem tất cả về cách nó hoạt động! Nó tự động là bộ điều khiển chia tách trên iPad và giao diện điều hướng trên iPhone.

+0

Và đây là ví dụ của tôi cho thấy cách xây dựng toàn bộ thứ cho iOS 8 trong mã, nếu bạn không muốn sử dụng bảng phân cảnh: https://github.com/mattneub/Programming-iOS-Book-Examples/tree/master/bk2ch09p488basicMasterDetail/MasterDetail – matt

1

Bạn có thể có nhiều hơn hai bảng phân cảnh. Nếu bạn không thể cho chúng tôi kích cỡ lớp/bố cục tự động để hoàn thành công việc của bộ điều khiển chế độ xem được chia sẻ giữa iPhone và iPad, bạn có thể chia phần đó thành các bảng phân cảnh riêng biệt. Sau đó, bạn có thể tạo bảng phân cảnh thứ ba chứa bộ điều khiển chế độ xem được chia sẻ. Sau đó, bạn có thể khởi tạo bảng phân cảnh đó trong mã và sử dụng nó để khởi tạo bộ điều khiển chế độ xem của nó.

1

Tôi quản lý để có kịch bản đó (chia bộ điều khiển trong bảng phân cảnh phổ quát hoạt động trên cả iOS8 và iOS7) bằng cách gọi một khoảng cách khác nhau trong khi trên iOS7 và iPhone. Kịch bản của tôi giống như sau:

Tôi có bộ điều khiển đăng nhập được cho là sẽ chuyển sang bộ điều khiển chính (theo cách thức).

Khi trên iOS8 hoặc iPad, tôi sử dụng điểm segue cho bộ điều khiển chế độ xem chia tách, trong khi khi trên iOS7-iPhone, tôi sử dụng một segue khác trỏ trực tiếp đến bộ điều hướng bên trái của bộ điều khiển phân tách (bỏ qua hoàn toàn).

Nếu từ bộ điều khiển bên trái, bạn có khoảng cách chi tiết trỏ đến bộ điều hướng bên phải (và bạn nên) và nếu loại segue là "Hiển thị chi tiết" (và nó nên) thì nó sẽ hoạt động như một lần đẩy thông thường môi trường iOS7-iPhone (chính xác là những gì chúng tôi muốn).Tuy nhiên, trên điều tôi nhận thấy, bộ điều khiển đích của chi tiết segue trong kịch bản IOS7-iPhone trở thành bộ điều khiển xem gốc của điều hướng bên phải (mặc dù segue chỉ đến nav), do đó, nếu bạn có một số mã trong các prepareForSegue bạn có thể cần phải thích ứng với nó để xử lý khác nhau)

(Đối với việc xác định nếu nền tảng này là iOS8 và nếu tôi trên iPhone/iPad thành ngữ tôi sử dụng các tiêu chuẩn

[[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0 and UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) 
2

Ngay cả với giao diện người dùng thích nghi , cá nhân tôi thích làm việc trên bảng phân cảnh khác nhau. Đối với bố cục phức tạp, nó dễ dàng hơn theo cách này và nó sẽ không dễ dàng ily phá vỡ bố cục cho kích thước màn hình khác. Có quá nhiều hạn chế có thể làm cho khó hơn để duy trì. Ngoài ra việc di chuyển phân cấp đối tượng sẽ phá vỡ bố cục cho màn hình khác.

Là tiền thưởng, nếu bạn làm việc với mac cấp thấp như không khí mackbook hoặc mac cũ, nó cũng giảm thời gian tải và nhận được phản hồi tốt hơn khi bạn làm việc với bảng phân cảnh.

Các vấn đề liên quan