У меня возникла проблема с реализацией камеры View Controller для приложения iOS, над которым я работаю. Когда нажимается кнопка, у меня есть одноэлементный объект камеры, который управляет стороной AVFoundation
и захватывает изображение. Как вы можете видеть ниже, как только UIImage
будет захвачен с камеры, я передаю блок завершения, который его использует.
Первый метод ниже - это действие, которое срабатывает при нажатии кнопки захвата на камеру. Во-первых, слой камеры приостанавливается отключением соединения на уровне предварительного просмотра, после чего изображение захватывается. Затем объект камеры захватывает UIImage
, после чего я удаляю слой предварительного просмотра камеры из представления и вместо этого добавляю подкассету UIImageView
с захваченным изображением на своем месте.
Затем я хочу добавить изображение в альбом, который я создал в Фото, используя фреймворк. Я могу создать альбом без проблем, и я подтвердил, что объект PHAssetCollection
. Я использую во втором методе правильный.
По какой-то причине, однако, я не могу добавить запись UIImage
я в альбом. Я попытался добавить в альбом случайный файл изображения, который был у меня в моем проекте, и операция завершилась успешно. Я также подтвердил, что правильное изображение успешно передается методу addPhotoToSavedPhotos
с помощью операторов NSLog
для проверки описания изображения в обоих методах. Это заставляет меня поверить, что что-то не так с изображением, но ImageView успешно отображает его, поэтому я не уверен, что это может быть.
Если у кого-нибудь есть идеи решений, которые я могу попробовать, я был бы признателен. Также error.localizedDescription
из оператора NSLog
во втором методе выводит "The operation couldn't be completed
. (Cocoa ошибка -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);
}
}];
}