Tôi đang sử dụng UIImagePickerController trong UIPopoverController đang hoạt động hoàn hảo với iOS6. Với iOS 7 ảnh "xem trước" được hiển thị để chụp ảnh được xoay, nhưng nếu tôi chụp ảnh, ảnh sẽ được lưu chính xác.iPad iOS7 - UIImagePickerController trong UIPopoverController có hình ảnh xem trước sai
Đây là cách tôi nhận được bảng chọn của tôi:
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.mediaTypes = [NSArray arrayWithObjects:
(NSString *) kUTTypeImage,
nil];
imagePicker.allowsEditing = NO;
Và thêm nó vào một bộ điều khiển popover:
self.imagePickerPopOver = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
[self.imagePickerPopOver presentPopoverFromRect:CGRectMake(aPosViewA.x, cameraButton_y, 100.0, 30.0) inView:self.detailViewController.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
Đó là những tính toán cho các vị trí nút ở một UIScrollView để hiển thị các popover tại vị trí chính xác:
presentPopoverFromRect:CGRectMake(aPosViewA.x, cameraButton_y, 100.0, 30.0)
Tôi không nghĩ rằng vấn đề nằm ở đó như tôi đã thử o ut một số kết hợp.
Tôi cũng đã cố chụp ảnh ở chế độ toàn màn hình nhưng ứng dụng chỉ được phép sử dụng chế độ ngang. Nếu hình ảnh được chụp ở chế độ dọc và chế độ xem phương thức bị loại bỏ, ứng dụng sẽ vẫn ở chế độ dọc. Tôi không thể tìm thấy cách để ngăn UIImagePickerController chuyển sang chế độ dọc hoặc buộc ứng dụng quay lại chế độ nằm ngang nếu chế độ xem phương thức bị loại bỏ.
CẬP NHẬT
Tôi đã lấy câu trả lời từ here và tiến thêm một bước nữa.
tôi chuyển đổi quan điểm sau khi tạo bảng chọn và trước khi hiển thị các popover:
switch ([UIApplication sharedApplication].statusBarOrientation) {
case UIInterfaceOrientationLandscapeLeft:
self.imagePicker.view.transform = CGAffineTransformMakeRotation(M_PI/2);
break;
case UIInterfaceOrientationLandscapeRight:
self.imagePicker.view.transform = CGAffineTransformMakeRotation(-M_PI/2);
break;
default:
break;
}
mà làm việc miễn là tôi không quay lại iPad. Cho rằng tôi đang đăng ký tham gia thay đổi sự kiện định hướng:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil];
và thay đổi quan điểm chọn:
- (void)orientationChanged:(NSNotification *)notification{
if (self.imagePicker) {
switch ([UIApplication sharedApplication].statusBarOrientation) {
case UIInterfaceOrientationLandscapeLeft:
self.imagePicker.view.transform = CGAffineTransformMakeRotation(M_PI/2);
break;
case UIInterfaceOrientationLandscapeRight:
self.imagePicker.view.transform = CGAffineTransformMakeRotation(-M_PI/2);
break;
default:
break;
}
}
}
CÒN VẤN ĐỀ: Như tôi đã viết trong đầu, khi bức ảnh được chụp, đó là được hiển thị chính xác để chấp nhận hoặc loại bỏ nó. Điều này bây giờ được chuyển đổi là tốt. Bằng cách nào đó tôi cần phải biết khi nào hình ảnh được chụp và biến nó trở lại.
VÀ, đây thực sự là một bản hack khó chịu và có thể sẽ không hoạt động với Bản cập nhật iOS tiếp theo. Có ai là một ý tưởng làm thế nào để thực hiện điều đó một cách sạch hơn?
UPDATE 2
Đây là quá khó chịu, tôi đã tìm thấy một giải pháp sạch hơn mà giải quyết vấn đề của tôi, nhưng không phải là câu trả lời cho câu hỏi ban đầu về một imagepicker trong một bộ điều khiển popover, mà không được khuyến khích bởi Apple, nhưng được phép.
Tôi đã subclassed nay là UIImagePickerController như thế này:
@implementation QPImagePickerController
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return UIInterfaceOrientationIsLandscape(toInterfaceOrientation);
}
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscape;
}
@end
và tôi đang sử dụng imagepicker trong toàn màn hình thay vì trong một popover. Đã thử nghiệm cho đến nay trong iOS7.
Tôi đang đối mặt với cùng một vấn đề. Tôi không thể tin rằng đây không phải là vấn đề liên quan hơn — làm cách nào để không phá vỡ nhiều ứng dụng hơn? – daveMac
Chính xác cùng một vấn đề, điều này sẽ không được khắc phục trong bản cập nhật tiếp theo? – user1838169
Dường như với tôi cùng một vấn đề đang ảnh hưởng đến ứng dụng ios7 facebook sử dụng máy ảnh bật lên. – Mike