Tôi đã nâng cấp cả iPhone và SDK của mình lên iOS 4.0.1 và bây giờ Ứng dụng của tôi không chạy giống như cách nó đang chạy trong iOS 3.x.UIImagePickerController cameraViewTransform hoạt động khác nhau trong iOS 4
Ứng dụng của tôi sử dụng UIImagePickerController với máy ảnh tùy chỉnhOverlayView (mà tôi sẽ chặn trong bài đăng này). Điểm chính là tôi cần phải xem camera iphone ở chế độ toàn màn hình. Để đi thẳng vào vấn đề, tôi sẽ đặt một số mã và ảnh chụp màn hình để giải thích những gì đang xảy ra.
Tôi đã tạo Ứng dụng xem dựa trên sử dụng các dự án mẫu XCode có tên "CameraTransform", vì vậy tôi có hai lớp: CameraTransformAppDelegate
và CameraTransformViewController
, ok! Trong viewDidAppear
phương pháp 's CameraTransformViewController
tôi đặt đoạn mã sau:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
UIImagePickerController* picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.delegate = self;
//[self configurePicker_FirstAttempt:picker]; Use this!
//[self configurePicker_SecondAttempt:picker]; Use this too!
[self presentModalViewController:picker animated:YES];
}
- (void)configurePicker_FirstAttempt:(UIImagePickerController*) picker {
picker.showsCameraControls = NO;
picker.navigationBarHidden = YES;
// not needed (use defaults)
//picker.toolbarHidden = YES;
//picker.wantsFullScreenLayout = YES;
}
- (void)configurePicker_SecondAttempt:(UIImagePickerController*) picker {
// Transform values for full screen support
CGFloat cameraTransformX = 1.0;
CGFloat cameraTransformY = 1.12412;
picker.cameraViewTransform = CGAffineTransformScale(picker.cameraViewTransform, cameraTransformX, cameraTransformY);
}
Chạy dự án với/i nhận:
- cả
configurePicker_FirstAttempt
vàconfigurePicker_SecondAttempt
phương pháp các cuộc gọi nhận xét: defaultPicker.png. - chỉ
configurePicker_SecondAttempt
cuộc gọi phương thức đã nhận xét: configurePicker_FirstAttempt.png. - cả hai
configurePicker_FirstAttempt
vàconfigurePicker_SecondAttempt
các cuộc gọi phương thức không được chú trọng: configurePicker_SecondAttempt.png.
LƯU Ý:
- Trong iOS 3.x tôi đã sử dụng cách tiếp cận thứ ba (cả hai phương pháp không chú thích) để cấu hình công cụ chọn, đó là chương trình ở chế độ toàn màn hình mà không cần sự "thanh đen" ở phía dưới .
- Tôi đã kiểm tra giá trị ban đầu
picker.cameraViewTransform
(trước khi được thu nhỏ) và được đặt thành Nhận dạng (như mong đợi). - Các
picker.view.frame
được thiết lập để của giới hạn màn hình (0.0, 0.0, 320,0, 480,0) - Tôi cố gắng để nối một bản dịch với
picker.cameraViewTransform
(sau khi bị thu nhỏ lại), như thế này:CGAffineTransformTranslate(picker.cameraViewTransform, 0.0, 20.0);
và tôi nhận ra rằng có một số phần của "chế độ xem máy ảnh" đã bị ẩn (có thể nguồn gốc của nó không phải là 0.0, 0.0), vì vậy tôi có thêm "chế độ xem máy ảnh" trên màn hình.
Dường như trong SDK mới mà UIImagePickerController đã thay đổi theo một cách nào đó, có thể điều khiển máy ảnh có kích thước khác nhau giống nhau.
Có ai gặp sự cố này không?
Tôi cũng gặp phải vấn đề tương tự và cảm ơn mẹo có tỷ lệ. Tôi đã thử dịch, nhưng nó dường như không bị ảnh hưởng bởi nó. Nó thực sự lạ những gì đang xảy ra ở đây. Tôi sẽ liên kết với tính năng chia tỷ lệ ngay bây giờ. Nếu ai đó có một câu trả lời đúng cho vấn đề này, chúng tôi chắc chắn sẽ đánh giá cao nó. – Buju