Nie musisz "blokować kontrolera UIImagePicker w trybie portretu". Jak powiedziałeś "kiedy jest zmieniony na tryb poziomy, wygląda to trochę dziwnie" Właściwie nie wiem, dlaczego mówisz, że wygląda dziwnie. Ale tutaj jest moje doświadczenie widoku UIImagePicker wyglądają dziwne w trybie poziomym. To jest: Gdy AViewController jest kontrolerem widoku głównego. Widok BViewController dodaje podgląd do widoku AViewController. i presentModalViewController:UIImagePickerController
w BViewController. Widok UIImagePicker będzie wyglądał dziwnie w trybie poziomym.
Rozwiązaniem tego problemu jest UIImagePickerController
jako kontroler widoku głównego przed presentModelViewController. poniżej Kod źródłowy pokazać szczegół:
- (void) onCameraButtonTapped:(UIBarButtonItem *)buttonItem
{
//backupRootController it's use as a backup, it will recover after close the image picker controller.
self.backupRootController = [[UIApplication sharedApplication] keyWindow].rootViewController;
UIImagePickerController * imageController = [[UIImagePickerController alloc] init];
imageController.sourceType = UIImagePickerControllerSourceTypeCamera;
imageController.delegate = self;
....
[[[UIApplication sharedApplication] keyWindow] setRootViewController:imageController];
[self presentModalViewController:imageController animated:YES];
[imageController release];
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[[[UIApplication sharedApplication] keyWindow] setRootViewController:self.backupRootController];
....
}
Mam nadzieję, że to rozwiązanie może pomóc innej osobie w przyszłości. --Goman
Nie działa w systemie iOS5 – filou