Je crée une application iPad qui a plusieurs photos (UIImageViews
) dans une vue de défilement horizontale. Je veux permettre à l'utilisateur d'enregistrer les images dans sa photothèque lorsqu'il appuie sur l'un des UIImageView
s. J'aime la manière dont Safari gère ce problème: il suffit de taper et de maintenir enfoncé jusqu'à ce qu'un menu contextuel apparaisse, puis de cliquer sur enregistrer l'image. Je sais qu'il y a le "UIImageWriteToSavedPhotosAlbum
". Mais je suis un débutant pour le développement iOS et je ne suis pas trop sûr de savoir où aller avec et où le mettre (c'est-à-dire comment détecter quelle image a été tapée). D'après ce que j'ai trouvé, j'ai vu que les gens utilisent UIImage
au lieu de UIImageView
. Dois-je convertir ma vue en UIImage
? Si c'est le cas, comment? Comment puis-je détecter lorsque l'utilisateur appuie sur les images et sur lequel a été tapé? Si vous pouviez me diriger dans la bonne direction, et peut-être quelques exemples, je l'apprécierais grandement.Enregistrer l'image dans UIImageView to iPad Photos Library
7
A
Répondre
32
Vous pouvez utiliser la propriété image
d'un UIImageView
pour obtenir l'image actuelle:
UIImage* imageToSave = [imageView image]; // alternatively, imageView.image
// Save it to the camera roll/saved photo album
UIImageWriteToSavedPhotosAlbum(imageToSave, nil, nil, nil);
3
En ce qui concerne la partie de votre question demandant comment détecter ce qui UIImageView a été exploité, vous pouvez utiliser le code comme ce qui suit :
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesEnded:touches withEvent:event];
UITouch *touch = [touches anyObject];
CGPoint touchEndpoint = [touch locationInView:self.view];
CGPoint imageEndpoint = [touch locationInView:imageview];
if(CGRectContainsPoint([imageview frame], touchEndpoint))
{
do here any thing after touch the event.
}
}
4
- (IBAction)TakePicture:(id)sender {
// Create image picker controller
UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
// Set source to the camera
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
// Delegate is self
imagePicker.delegate = self;
OverlayView *overlay = [[OverlayView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGTH)];
// imagePicker.cameraViewTransform = CGAffineTransformScale(imagePicker.cameraViewTransform, CAMERA_TRANSFORM_X, CAMERA_TRANSFORM_Y);
// Insert the overlay:
imagePicker.cameraOverlayView = overlay;
// Allow editing of image ?
imagePicker.allowsImageEditing = YES;
[imagePicker setCameraDevice:
UIImagePickerControllerCameraDeviceFront];
[imagePicker setAllowsEditing:YES];
imagePicker.showsCameraControls=YES;
imagePicker.navigationBarHidden=YES;
imagePicker.toolbarHidden=YES;
imagePicker.wantsFullScreenLayout=YES;
self.library = [[ALAssetsLibrary alloc] init];
// Show image picker
[self presentModalViewController:imagePicker animated:YES];
}
- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
// Access the uncropped image from info dictionary
UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
// Save image to album
UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
// save image to custom album
[self.library saveImage:image toAlbum:@"custom name" withCompletionBlock:^(NSError *error) {
if (error!=nil) {
NSLog(@"Big error: %@", [error description]);
}
}];
[picker dismissModalViewControllerAnimated:NO];
}
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
{
UIAlertView *alert;
// Unable to save the image
if (error)
alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"Unable to save image to Photo Album."
delegate:self cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
else // All is well
alert = [[UIAlertView alloc] initWithTitle:@"Success"
message:@"Image saved to Photo Album."
delegate:self cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alert show];
}
- (void) alertView:(UIAlertView *)alert clickedButtonAtIndex:(NSInteger)buttonIndex
{
// After saving iamge, dismiss camera
[self dismissModalViewControllerAnimated:YES];
}
1
En Swift:
// Save it to the camera roll/saved photo album
// UIImageWriteToSavedPhotosAlbum(self.myUIImageView.image, nil, nil, nil) or
UIImageWriteToSavedPhotosAlbum(self.myUIImageView.image, self, "image:didFinishSavingWithError:contextInfo:", nil)
func image(image: UIImage!, didFinishSavingWithError error: NSError!, contextInfo: AnyObject!) {
if (error != nil) {
// Something wrong happened.
} else {
// Everything is alright.
}
}
Questions connexes
- 1. iPhone - enregistrer l'état UIImageView
- 2. NLog to Enterprise Library
- 3. iphone to ipad portage
- 4. Enregistrer le contenu de UIwebview dans la galerie de photos
- 5. Curseur vignette dans la barre d'outils, comme l'application Photos iPad
- 6. Enregistrer des photos de l'appareil photo dans Android
- 7. Enregistrer des photos/images dans l'application? iPhone SDK
- 8. Enregistrer UIImage dans l'album photo, puis ouvrir l'application Photos
- 9. Comment enregistrer les photos téléchargées dans la base de données?
- 10. problème de mémoire au sujet UIImageView sur IPhone 4.0/IPad
- 11. Qu'est-ce que l'élément d'interface utilisateur sur iPad Photos App?
- 12. Comment enregistrer un screencast pour iPad
- 13. une idée comment photos téléchargent le site enregistrer là pics?
- 14. Fuite de mémoire pour UIImageView?
- 15. Comment enregistrer une image capturée à partir d'une caméra dans la bibliothèque de photos du périphérique IPhone?
- 16. Enregistrer un UIImage à partir d'un UIImageView avec CGAffineTransform
- 17. iPhone UIImageView animation malheurs
- 18. ajoutant UIImageView à UIScrollView jette touche de cacao d'exception pour iPad
- 19. Clustering Photos dans R?
- 20. Photos dans SQL DB
- 21. Télécharger des photos dans asp.net
- 22. Evénement tactile dans UIImageView
- 23. Redimensionner UIImageView dans UITableViewCell
- 24. javascript chart library ou php chart library
- 25. Fusion de photos - iPhone SDK
- 26. comment enregistrer une image aux photos dans l'iPhone sans perte de qualité?
- 27. enregistrer des photos de problème dans une vue à l'aide django-imagekit
- 28. Center UIImageView dans UIScrollView sans contentInset?
- 29. UIImageView: Rotation et mise à l'échelle. Comment puis-je enregistrer les résultats?
- 30. Photos et Base de données
Merci pour la réponse rapide. Mais comment puis-je détecter quel UIImageView a été tapoté? Y at-il un moyen de faire apparaître un pop-up lorsque l'utilisateur appuie sur l'image qui permet à l'utilisateur de sélectionner un bouton pour enregistrer? Et quand le bouton "Enregistrer" est pressé, je voudrais mettre votre déclaration dans cette IBAction, non? – Brian
Vous pouvez câbler l'événement 'retoucher à l'intérieur' sur votre UIImageView dans Interface Builder à une méthode d'action que vous implémentez (ceci peut également être fait par programme), comme '- (void) touchedImageView: (id) sender', auquel cas «expéditeur» serait la vue qui a été touchée. À partir de là, vous pouvez présenter un menu (comme une «UIActionSheet») pour décider de sauvegarder l'image. – bosmacs
J'ai le code en bas, mais je ne vois aucun des événements 'touch' dans Interface Builder. Avec l'un de mes UIImageViews sélectionné, je vais à la fenêtre Inspecteur, puis l'onglet Connexions, non? Je vois les événements tactiles quand un bouton est sélectionné mais pas un UIImageView. Est-ce que je devrais juste faire tous ces UIImageViews dans des boutons? – Brian