Dopo aver letto la documentazione e sample code from apple per UIImagePickerController e dopo aver letto molti tutorial e anche Questions qui su Stackoverflow (or here), sono giunto alla conclusione che UIImagePicker è in grado di presentare una "finestra di ritaglio" all'utente e consente all'utente di ritagliare e spostare la parte destra dell'immagine che desidera utilizzare.UIImagePickerController + Ritaglio: cosa permette AllowEditing e cosa non lo fa?
Ma esaminando questi esempi su iOS 7.1, non appare alcuna finestra di ritaglio. Non appare nulla che consenta all'utente di ritagliare una parte dell'immagine presa. Tutti i test si sono verificati su hardware reale (iPhone 5S), nessun simulatore iPhone è stato utilizzato qui a causa della telecamera mancante;)
Inoltre, al metodo delegato "didFinishPickingMediaWithInfo" non è presente alcuna voce di "UIImagePickerControllerEditedImage" nelle "informazioni" - NSDictionary.
quello che ho fatto:
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];
ed il metodo delegato:
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
// .... do something
}
A questo punto, solo 3 chiavi sono disponibili nel Dizionario con il nome di "info":
- UIImagePickerControllerOriginalImage
- UIImagePickerControll erMediaMetadata
- UIImagePickerControllerMediaType
nient'altro. Inoltre, non è stata visualizzata alcuna finestra di ritaglio o controlli simili.
Sono in errore con le mie aspettative sul comportamento di ImagePicker? A questa domanda SF l'utente ha scritto "Crop window comes up". La funzione è stata rimossa? La documentazione è obsoleta o ho completamente torto qui?
Ho provato anche questo codice preso da un altro 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];
}];
}
non appare alcuna finestra di ritaglio, il tasto "UIImagePickerControllerEditedImage" non è presente alla info-NSDictionary.
Qualcuno può spiegarmi il comportamento giusto? Grazie mille in anticipo.
Ha lo stesso effetto già descritto nella domanda: non appare alcuna finestra di ritaglio. tutto quello che posso fare è scattare la foto o riprenderla. – itinance