Skip to content

Instantly share code, notes, and snippets.

@roblav96
Created September 9, 2016 14:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save roblav96/efdfdbb8197113e6f91c8ddc69911f02 to your computer and use it in GitHub Desktop.
Save roblav96/efdfdbb8197113e6f91c8ddc69911f02 to your computer and use it in GitHub Desktop.
loadImages(): Promise<any> {
let smart: PHFetchResult = PHAssetCollection.fetchAssetCollectionsWithTypeSubtypeOptions(
PHAssetCollectionType.PHAssetCollectionTypeSmartAlbum,
PHAssetCollectionSubtype.PHAssetCollectionSubtypeSmartAlbumScreenshots,
null
)
let collection: PHAssetCollection = smart.firstObject
if (!collection) {
global.tnsconsole.error('!collection')
return
}
if (!collection.isKindOfClass(PHAssetCollection)) {
global.tnsconsole.error('!isKindOfClass(PHAssetCollection)')
return
}
let assets: PHFetchResult = PHAsset.fetchAssetsInAssetCollectionOptions(collection, null)
global.tnsconsole.log('assets.count', assets.count)
if (assets.count == 0) {
global.tnsconsole.error('assets.count == 0')
return
}
PickerComponent.assetCount = assets.count - 1
PickerComponent.assetIndex = PickerComponent.assetCount
return this.pushAssets(assets).catch(function(err) {
global.tnsconsole.error('err', err)
})
}
pushAssets(assets: PHFetchResult): Promise<any> {
return this.createPHImage(assets[PickerComponent.assetIndex]).then((src) => {
this.images.push(src)
PickerComponent.assetIndex--
if (PickerComponent.assetIndex > PickerComponent.assetCount - 5) {
return this.pushAssets(assets)
}
})
}
createPHImage(image: PHAsset): Promise<ImageSource> {
return new Promise<ImageSource>(function(resolve, reject) {
let resizeMode: PHImageRequestOptions = PHImageRequestOptions.new()
resizeMode.resizeMode = PHImageRequestOptionsResizeMode.PHImageRequestOptionsResizeModeExact
resizeMode.synchronous = false
resizeMode.deliveryMode = PHImageRequestOptionsDeliveryMode.PHImageRequestOptionsDeliveryModeHighQualityFormat
resizeMode.normalizedCropRect = CGRectMake(0, 0, 1, 1)
PHImageManager.defaultManager().requestImageForAssetTargetSizeContentModeOptionsResultHandler(
image,
PHImageManagerMaximumSize,
PHImageContentMode.PHImageContentModeAspectFill,
resizeMode,
function(img, data) {
if (img) {
let src = new ImageSource()
src.setNativeSource(img)
return resolve(src)
} else {
return reject(new Error('NULL IMAGE'))
}
}
)
})
}
<ListView [items]="images" (itemTap)="onItemTap($event)">
<template let-item="item">
<Image [imageSource]="item"></Image>
</template>
</ListView>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment