Moja aplikacja pozwala użytkownikowi zrobić zdjęcie i dodać nakładkę przed jej zapisaniem.Udostępnianie obrazu iOS w sieciach społecznościowych
Chciałbym, aby użytkownik udostępnił swoje zdjęcie za pomocą dowolnej aplikacji obsługującej obrazy (np. E-mail, facebook, twitter ...), podobnie jak w przypadku systemu Android.
Próbowałem użyć UIDocumentController, ale nie pokazuje on Facebooka ani Twittera tak, jak robi to w oficjalnej galerii. Powoduje także awarię mojej aplikacji po wykonaniu drugiego zdjęcia.
Czy istnieje prosty sposób na zrobienie tego? Nie będę używać SDK Facebooka i tak dalej.
Oto co zrobić, gdy obraz jest zrobione:
[stillImageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler:
^(CMSampleBufferRef imageSampleBuffer, NSError *error) {
if(!error){
//Resize the picture and add the overlay
UIImage *picture = [self imageFromSampleBuffer:imageSampleBuffer];
//Custom code letting me save the picture in a specific album
[self.library saveImage:picture toAlbum:@"myApp" metadata:metadata withCompletionBlock:^(NSError *error,NSURL* assetURL) {
if (error!=nil) {
NSLog(@"Big error: %@", [error description]);
} else {
NSLog(@"Image Saved");
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"tmp.jpg"];
//Only way to use UIDocumentController is to save the file at a known location
NSData* imagedata = UIImageJPEGRepresentation(picture, 0.9f);
[imagedata writeToFile:path atomically:NO];
NSLog(@"%@",path);
docController.URL = [NSURL fileURLWithPath:path];
// This make my app crash after the second picture
[docController presentPreviewAnimated:YES];
}
}];
} else {
NSLog(@"%@",error);
}
}];
Wygląda świetnie, dzięki! Nie ma gotowego przycisku, który mógłby wybrać użytkownik? – Oyashiro
działa prawie idealnie, ale kiedy wyślę e-mail, wysyła go, ale kontroler nie zostanie zwolniony, czy istnieje metoda powrotu do poprzedniego widoku po sukcesie? – suMi
Edytowano odpowiedź. Sprawdź punkt # 5. – vforvendetta