Po przeczytaniu dokumentacji i sample code from apple dotyczącej UIImagePickerController i po przeczytaniu wielu tutoriali, a nawet Questions tutaj w Stackoverflow (or here), doszedłem do wniosku, że wbudowany UIImagePicker jest w stanie przedstawić "okno przycinania" użytkownikowi i pozwól użytkownikowi przyciąć i przesunąć prawą część obrazu, którego chce użyć.UIImagePickerController + Cropping: co pozwala na edycję, a co nie?
Ale sprawdzając te przykłady na iOS 7.1, nie pojawia się okno przycinania. Nie pojawia się nic, co pozwoliłoby użytkownikowi wyciąć część zrobionego zdjęcia. Wszystkie testy zostały przeprowadzone na prawdziwym sprzęcie (iPhone 5S), nie użyto tutaj symulatora iPhone'a z powodu braku kamery;)
Ponadto, przy użyciu metody delegującej "didFinishPickingMediaWithInfo" nie ma wpisu "UIImagePickerControllerEditedImage" w "info" - NSDictionary.
co zrobiłem:
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
#if TARGET_IPHONE_SIMULATOR
// iPhone-Simulator has no camera, just save images to the photoalbum on the simulator to use them here
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
#else
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
#endif
imagePickerController.editing = YES;
imagePickerController.delegate = (id)self;
imagePickerController.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
[self presentModalViewController:imagePickerController animated:YES];
i metoda delegat:
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
// .... do something
}
W tym momencie, tylko 3 Klucze dostępne są w Słowniku o nazwie "Info":
- UIImagePickerControllerOriginalImage
- UIImagePickerControll erMediaMetadata
- UIImagePickerControllerMediaType
nic innego. Nie pojawiło się również okno przycinania ani inne podobne kontrolki.
Czy mam rację, jeśli chodzi o moje oczekiwania dotyczące zachowania ImagePicker? Na to pytanie SF użytkownik napisał "Crop window comes up". Czy funkcja została usunięta? Czy dokumentacja jest nieaktualna, czy też całkowicie się mylę?
Próbowałem również ten kod zaczerpnięty z innego answer to a similar question:
- (void) imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[picker dismissViewControllerAnimated:YES completion:^{
// Edited image works great (if you allowed editing)
UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage];
// AND the original image works great
UIImage *originalImage = [info objectForKey:UIImagePickerControllerOriginalImage];
// AND do whatever you want with it, (NSDictionary *)info is fine now
UIImage *myImage = [info objectForKey:UIImagePickerControllerEditedImage];
}];
}
nie pojawia się okno przycinania, klawisz „UIImagePickerControllerEditedImage” nie jest obecny na info-NSDictionary.
Czy ktoś może wyjaśnić mi właściwe zachowanie? Z góry bardzo dziękuję.
Ma taki sam efekt, jak już opisano w moim pytaniu: nie pojawia się okno przycinania. wszystko, co mogę zrobić, to zrobić zdjęcie lub powtórzyć. – itinance