有没有办法获取我的iOS应用程序截图列表?

Cha*_*rly 2 screenshot objective-c uiimagepickercontroller ios swift

在我的iOS应用中,有没有办法访问从我的应用程序中截取的所有屏幕截图?

如果不可能,有没有办法只用截屏专辑(来自所有应用程序)打开图像选择器控制器(UIImagePickerController)?

谢谢.

Kub*_*bba 5

没有办法提供标准的UIImagePickerController,其源类型不是这里定义的

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIImagePickerController_Class/#//apple_ref/c/tdef/UIImagePickerControllerSourceType

但是,有一种方法可以获取截图的专辑并将其呈现在自己的UI中.根据文档,你可以做这样的事情:

let options = PHFetchOptions()
options.predicate = NSPredicate(format: "localizedTitle = Screenshots")
let collections = PHAssetCollection.fetchAssetCollectionsWithType(.SmartAlbum, subtype: .Any, options: options)
let sceenShots = collections.firstObject as? PHAssetCollection
Run Code Online (Sandbox Code Playgroud)

但是由于bug(上面会因为谓词而崩溃)你可以获取所有专辑,然后过滤截图的专辑(适用于iOS8 +)

let collections = PHAssetCollection.fetchAssetCollectionsWithType(.SmartAlbum, subtype: .Any, options: nil)
var screenshots: PHAssetCollection?
collections.enumerateObjectsUsingBlock {
    (collection, _, _) -> Void in
    if collection.localizedTitle == "Screenshots" {
        screenshots = collection as? PHAssetCollection
    }
}
Run Code Online (Sandbox Code Playgroud)

或者如果您的目标是iOS9 +,您可以这样做:

let collections = PHAssetCollection.fetchAssetCollectionsWithType(.SmartAlbum, subtype: .SmartAlbumScreenshots, options: nil)
let screenshots = collections.lastObject as? PHAssetCollection
Run Code Online (Sandbox Code Playgroud)

另请注意,无法从特定应用中获取屏幕截图.

  • 不要比较集合的localizedTitle.查看集合的`assetCollectionSubtype`并查看它是否是`SmartAlbumScreenshots`. (3认同)