2015-08-06 18 views
6

Tôi đang cố gắng trình bày thư viện ảnh, trong cửa sổ bật lên, trên iPad với iOS 9 beta 4 và Swift. Cách ưa thích là thông qua một cửa sổ bật lên, nhưng UIPopoverController hiện không được chấp nhận. Rõ ràng nó bây giờ được thực hiện thông qua UIViewController, nhưng không có tài liệu, hoặc mẫu mã ra khỏi đó mà tôi có thể tìm thấy. Mọi sự trợ giúp sẽ rất được trân trọng!Cách trình bày UIImagePickerController trong Popover với iOS 9 và Swift

Cảm ơn bạn!

Trả lời

2

Tôi chưa nhập vào ủy quyền và xử lý câu trả lời bộ chọn hình ảnh ở đây, mục đích của bài đăng này chỉ đơn giản là xem xét việc sử dụng UIImagePickerController mà không cần sử dụng các lớp và phương thức không dùng nữa.

let myPicker = UIImagePickerController() 
myPicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary 

myPicker.modalPresentationStyle = UIModalPresentationStyle.Popover 

self.presentViewController(myPicker, animated: true, completion: nil) 

let popper = myPicker.popoverPresentationController 
// returns a UIPopoverPresentationController 
popper?.barButtonItem = sender as? UIBarButtonItem 

Xin vui lòng sửa nếu cần

+0

Làm thế nào để làm trong Objective-C? –

6

Câu trả lời ở trên là gần như chính xác ngoại trừ việc neo trong popoverPresentationController phải được thiết lập trước khi gọi presentViewController():

let myPicker = UIImagePickerController() 
myPicker.delegate = self 
myPicker.sourceType = .PhotoLibrary 
myPicker.modalPresentationStyle = .Popover 

let ppc = myPicker.popoverPresentationController 
ppc?.barButtonItem = sender as? UIBarButtonItem 
ppc?.permittedArrowDirection = .Any 

presentViewController(myPicker, animated: true, completion: nil) 
+0

Mỗi tài liệu của Apple: Định cấu hình bộ điều khiển trình bày bật lên sau khi gọi presentViewController: hoạt ảnh: hoàn thành: có vẻ phản trực giác nhưng UIKit không tạo trình điều khiển bản trình bày cho đến sau khi bạn bắt đầu bản trình bày. Ngoài ra, UIKit phải đợi cho tới chu kỳ cập nhật tiếp theo mới hiển thị nội dung mới trên màn hình. Sự chậm trễ đó cho bạn thời gian để cấu hình bộ điều khiển trình bày cho cửa sổ bật lên của bạn. –

+2

Thay vì thiết lập một barButtonItem nó cũng có thể thiết lập một sourceView mà từ đó cửa sổ bật lên sẽ được trình bày. Điều này là hữu ích nếu bạn không có một barButton mà từ đó cửa sổ bật lên sẽ được trình bày. – benrudhart

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