我正嘗試在iPhone的照片庫中創建自定義相冊,然後保存我用相機拍攝的照片或從手機相機膠捲中選擇的相片自定義相冊。我可以成功創建相冊,但照片不會保存在那裏,而是保存到模擬器保存的照片專輯...我不知道如何告訴UIImageWriteToSavedPhotosAlbum
保存到我剛剛創建的新專輯addAssetsGroupAlbumWithName
...將照片保存到iPhone相冊中的自定義相冊
這裏是我的代碼到目前爲止 - 我剪斷了幾個部分,以保持我的代碼示例短...
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
if([mediaType isEqualToString:(__bridge NSString *)kUTTypeImage])
{
// pull GPS information from photos metadata using ALAssetsLibrary
void (^ALAssetsLibraryAssetForURLResultBlock)(ALAsset *) = ^(ALAsset *asset)
{
// code snipped out
};
NSURL *assetURL = [info objectForKey:UIImagePickerControllerReferenceURL];
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library assetForURL:assetURL
resultBlock:ALAssetsLibraryAssetForURLResultBlock
failureBlock:^(NSError *error)
{
// code snipped out
}];
// getimage from imagePicker and resize it to the max size of the iPhone screen
UIImage *originalImage = [info objectForKey:UIImagePickerControllerOriginalImage];
UIImage *resizedImage = [util_ createThumbnailForImage:originalImage thumbnailSize:[util_ determineIPhoneScreenSize]];
NSData *imageData = UIImagePNGRepresentation(resizedImage);
// code snipped out
// code snipped out
// code snipped out
// code snipped out
// code snipped out
// code snipped out
// create a new album called "My Apps Photos"
[library addAssetsGroupAlbumWithName:@"My Apps Photos"
resultBlock:^(ALAssetsGroup *group)
{
NSLog(@"in addAssetsGroupAlbumWithName resultBlock");
// save file to album
UIImageWriteToSavedPhotosAlbum(resizedImage, self, nil, nil);
}
failureBlock:^(NSError *error)
{
NSLog(@"in addAssetsGroupAlbumWithName failureBlock");
}
];
}
}
所以......就像我說的,它創建新相冊,但不保存照片。我該如何將它保存到新專輯中?也許我的聲音沒有用UIImageWriteToSavedPhotosAlbum
??
注:我使用的Xcode 4.3.2,IOS 5.1,和ARC
我得到一個問題與我們的代碼造成的「[一個EXC錯誤訪問groupToAddTo addAsset:asset];' - 有什麼想法嗎?乾杯.. – theiOSDude
一個可能的原因是您的庫變量不再有效 - 只要您訪問使用它生成的對象,您就需要您的庫保持一段時間;即你不能讓庫去分配,然後嘗試在groupToAddTo上運行一個選擇器...我通常使庫成爲一個屬性,並在viewDidLoad中初始化它。 –
Fernando的答案在iOS 6.0.1中爲我工作 –