插播一段iOS的知识点 证明我也是一个iOS工程师
1、检索音视频
- PHFetchOptions *allPhotosOptions;
- @property (nonatomic, strong) PHFetchResult *assetsFetchResults;
- if (allPhotosOptions == nil) {
- allPhotosOptions = [[PHFetchOptions alloc] init];
- allPhotosOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];
- }
- self.assetsFetchResults = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:allPhotosOptions];
PHFetchOptions *allPhotosOptions;
@property (nonatomic, strong) PHFetchResult *assetsFetchResults;
if (allPhotosOptions == nil) {
allPhotosOptions = [[PHFetchOptions alloc] init];
allPhotosOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];
}
self.assetsFetchResults = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:allPhotosOptions];
其中assetsFetchResults存储了所有的图片信息,PHAssetMediaTypeImage为搜索图片的类型,同样的搜索其他类的可以根据
- <span style="font-size: 18px;">typedef NS_ENUM(NSInteger, PHAssetMediaType) {
- PHAssetMediaTypeUnknown = 0,
- PHAssetMediaTypeImage = 1,
- PHAssetMediaTypeVideo = 2,
- PHAssetMediaTypeAudio = 3,
- } NS_ENUM_AVAILABLE_IOS(8_0);</span>
<span style="font-size: 18px;">typedef NS_ENUM(NSInteger, PHAssetMediaType) {
PHAssetMediaTypeUnknown = 0,
PHAssetMediaTypeImage = 1,
PHAssetMediaTypeVideo = 2,
PHAssetMediaTypeAudio = 3,
} NS_ENUM_AVAILABLE_IOS(8_0);</span>
2、获取图片UIImage
- <span style="font-size: 18px;">[[PHCachingImageManager defaultManager] requestImageForAsset:asset
- targetSize:AssetGridThumbnailSize
- contentMode:PHImageContentModeAspectFill
- options:nil
- resultHandler:^(UIImage *result, NSDictionary *info) {
- // Set the cell's thumbnail image if it's still showing the same asset.
- if ([cell.representedAssetIdentifier isEqualToString:asset.localIdentifier]) {
- cell.thumbnailImage = result;
- }
- }];
- </span>
<span style="font-size: 18px;">[[PHCachingImageManager defaultManager] requestImageForAsset:asset
targetSize:AssetGridThumbnailSize
contentMode:PHImageContentModeAspectFill
options:nil
resultHandler:^(UIImage *result, NSDictionary *info) {
// Set the cell's thumbnail image if it's still showing the same asset.
if ([cell.representedAssetIdentifier isEqualToString:asset.localIdentifier]) {
cell.thumbnailImage = result;
}
}];
</span>
asset为assetsFetchResults中的一个PHAsset,targetSize是获取图片的大小,这个根据你显示的方式设置,如果需要获取图片其他信息比如标题可以采用
- [phAsset valueForKey:@"filename"];
[phAsset valueForKey:@"filename"];
3、播放视频
- -(void)setVideoAsset:(PHAsset *)videoAsset
- {
- _videoAsset = videoAsset;
- [[PHImageManager defaultManager] requestPlayerItemForVideo:_videoAsset options:nil resultHandler:^(AVPlayerItem * _Nullable playerItem, NSDictionary * _Nullable info) {
- self.currentItem = playerItem;
- [self.player replaceCurrentItemWithPlayerItem:self.currentItem];
- [self.currentItem addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionNew context:nil];
- }];
- }
-(void)setVideoAsset:(PHAsset *)videoAsset
{
_videoAsset = videoAsset;
[[PHImageManager defaultManager] requestPlayerItemForVideo:_videoAsset options:nil resultHandler:^(AVPlayerItem * _Nullable playerItem, NSDictionary * _Nullable info) {
self.currentItem = playerItem;
[self.player replaceCurrentItemWithPlayerItem:self.currentItem];
[self.currentItem addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionNew context:nil];
}];
}