Mam problem z zaimplementowaniem kontrolera widoku kamery dla aplikacji na iOS, nad którą pracuję. Po naciśnięciu przycisku mam obiekt kamery jednoelementowej, który zarządza stroną i przechwytuje obraz. Jak widać poniżej, po przechwyceniu kamery UIImage
, przechodzę przez blok zakończenia, który go wykorzystuje.Niepowodzenie PHAssetChangeRequest dla UIImage wykonanego aparatem
Pierwsza z poniższych metod to akcja uruchamiana po naciśnięciu przycisku fotografowania w aparacie. Po pierwsze, warstwa kamery zostaje zatrzymana poprzez wyłączenie połączenia w warstwie podglądu, a następnie przechwycenie obrazu. Następnie obiekt kamery przechwytuje obiekt UIImage
, w którym to momencie usuwam warstwę podglądu z kamery z widoku, a zamiast niej dodam subview UIImageView
z przechwyconym obrazem w jego miejsce.
Następnie chcę dodać obraz do albumu, który utworzyłem w Zdjęciach przy użyciu frameworku Zdjęcia. Mogę utworzyć album bez problemu i zweryfikowałem obiekt PHAssetCollection
. Używam w drugiej metodzie jest poprawna.
Z jakiegoś powodu nie mogę dodać przechwyconego albumu do albumu UIImage
. Próbowałem dodać do albumu losowy plik obrazu, który miałem w swoim projekcie, a operacja zakończyła się pomyślnie. Sprawdziłem również, czy poprawny obraz został pomyślnie przekazany do metody addPhotoToSavedPhotos
za pomocą instrukcji NSLog
w celu sprawdzenia opisu obrazu w obu metodach. To prowadzi mnie do przekonania, że coś jest nie tak z obrazem, ale obraz wyświetla go z powodzeniem, więc nie jestem pewien, co to może być.
Jeśli ktoś ma jakieś pomysły na rozwiązania, które mógłbym spróbować, byłbym wdzięczny. Również error.localizedDescription
z instrukcji NSLog
w drugiej metodzie wyprowadza "The operation couldn't be completed
. (Błąd kakao -1) „.
- (IBAction)capturePhoto:(id)sender {
[self pauseCameraLayer];
[[eventCamera sharedInstance] captureStillUIImage:^(UIImage *image, NSError *error){
if(error)
{
NSLog(@"error capturing photo");
}
else
{
NSLog(@"%@",image.debugDescription);
}
[_captureButton setHidden:YES];
[_switchCameraButton setHidden:YES];
UIImageView *preview=[[UIImageView alloc] initWithImage:image];
[preview setAutoresizesSubviews:YES];
[preview setContentMode:UIViewContentModeScaleAspectFit];
[preview setTransform:CGAffineTransformMakeRotation(M_PI_2)];
preview.frame=_imageView.bounds;
[_imageView addSubview:preview];
[self addPhotoToSavedPhotos:[image copy]];
NSLog(@"1: %@",image.description);
}];
-(void)addPhotoToSavedPhotos:(UIImage*)photo
{
PHAssetCollection *myCollection=[self getAPPCollection];
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
//Perform changes to photo library
PHAssetChangeRequest *req=[PHAssetChangeRequest creationRequestForAssetFromImage:photo];
PHAssetCollectionChangeRequest *assetChangeRequest=[PHAssetCollectionChangeRequest changeRequestForAssetCollection:myCollection];
[assetChangeRequest addAssets:[NSArray arrayWithObject:req.placeholderForCreatedAsset]];
//[libReq addAssets:@[assetPlaceHolder]];
}completionHandler:^(BOOL success, NSError *error){
//Perform any necessary actions after adding the photo to the photo
//library
if(!success)
{
NSLog(@"didn't succeed, error: %@",error.localizedDescription);
}
}];
}
pan naprawić? – kondratyevdev
możesz nam powiedzieć, co jest wydrukowany w dzienniku? –
Może być gdzieś tutaj błąd, myślę, że self addPhotoToSavedPhotos: [image copy]]; Spróbuj dodać breakPoint w - (void) addPhotoToSavedPhotos: (UIImage *), funkcję zdjęcia i sprawdź, czy do tej funkcji zostało przesłane zdjęcie. –