gpt4 book ai didi

ios - 显示自定义相册中的照片,但不显示相机胶卷/我的照片流中的照片

转载 作者:行者123 更新时间:2023-12-01 22:59:08 24 4
gpt4 key购买 nike

我正在开发 PHPhotoLibrary,我在其中创建相册并将图像保存到其中。但是,保存到相册的图像也会出现在相机胶卷和我的照片流中。

我搜索了很多,没有发现任何实质性内容。

我编写了一个函数,如下所示,用于从相机角色和我的照片流中删除照片。

-(void)cleanUpCameraRoll:(NSString *)localID
{

PHFetchResult *newlyCreatedAssetFetchResult = [PHAsset fetchAssetsWithLocalIdentifiers:@[localID] options:nil];

PHAsset *newlyCreatedAsset = [newlyCreatedAssetFetchResult firstObject];


//Get Camera Roll
PHFetchResult *result = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum
subtype:PHAssetCollectionSubtypeSmartAlbumUserLibrary
options:nil];
PHAssetCollection *cameraRollCollection = result.firstObject;

//Get Photo Stream Album - PHAssetCollectionSubtypeAlbumMyPhotoStream
PHFetchResult *result2 = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeSmartAlbum
subtype:PHAssetCollectionSubtypeAlbumMyPhotoStream
options:nil];
PHAssetCollection *photoStreamCollection = result2.firstObject;

//*********************************
PHFetchResult *assetsCameraRoll = [PHAsset fetchAssetsInAssetCollection:cameraRollCollection options:nil];


for (PHAsset *asset in assetsCameraRoll) {

if ([asset.localIdentifier isEqualToString:localID]) {

DebugLog(@"Got newly created asset in camera roll");
break;
}
}


PHFetchResult *assetsPhotoStream = [PHAsset fetchAssetsInAssetCollection:photoStreamCollection options:nil];


for (PHAsset *asset in assetsPhotoStream) {

if ([asset.localIdentifier isEqualToString:localID]) {

DebugLog(@"Got newly created asset in photo stream");
break;
}
}
//*********************************
NSError *error;
[[PHPhotoLibrary sharedPhotoLibrary] performChangesAndWait:^{

//Remove from Camera Roll

PHAssetCollectionChangeRequest *changeRequest1 = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:cameraRollCollection assets:newlyCreatedAssetFetchResult];

[changeRequest1 removeAssets:@[newlyCreatedAsset]];

PHAssetCollectionChangeRequest *changeRequest2 = [PHAssetCollectionChangeRequest changeRequestForAssetCollection:photoStreamCollection assets:newlyCreatedAssetFetchResult];
[changeRequest2 removeAssets:@[newlyCreatedAsset]];

} error:&error];
}

这段代码执行得很好,但我仍然在两个地方都看到了图像。

所以,我得出的结论是,相册只是照片的逻辑分组,一切都在相机角色和/或我的照片流中。是这样吗?

如果是,有什么办法(至少)让它隐藏在相机胶卷/照片流中吗?我想让照片仅在我的自定义相册中可见。

最佳答案

嗯,这不是一个答案,而是对你的结论的确认。我开始写这个作为评论,但格式很糟糕,所以在这里添加答案。请不要介意。

只有一种方法可以添加到照片库。所有 Assets 创建请求都将照片保存在相机胶卷中。将其添加到相册时,只会将 Assets 的 URL 添加到列表(分组在一个相册下)。自定义相册从相机胶卷中挑选所有需要的图像。

您还可以通过其他方式注意到这一点:-> 如果您删除相册中的照片,该照片会保留在相机胶卷中,但如果您从相机胶卷中删除它,则会从所有自定义相册中删除它。

-> 如果您注意到 Assets 是如何添加到相册中的,您会发现它基本上是从相机胶卷中检索 Assets 。没有API可以直接添加到相册

关于ios - 显示自定义相册中的照片,但不显示相机胶卷/我的照片流中的照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41827330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com