快3网上购买

iOS App中读取相册中照片及获得今天的一张图片的方式

电脑杂谈  发布时间:2019-09-02 11:05:11  来源:网络整理

ios 打开相册_ios 打开本地相册_ios 打开系统相册

UIImagePickerController从自拍、图库、相册获取照片

iOS 获取截图有三种方式:

1. 直接调用拍照

2. 从相册中选择

3。 从图库中选择

UIImagePickerController 是平台提供的拿来获取照片和视频的接口;

用UIImagePickerController 类来获取截图视频,大体分为以下几个步骤:

1. 初始化UIImagePickerController 类;

ios 打开系统相册_ios 打开相册_ios 打开本地相册

2. 设置UIImagePickerController 实例的数据来源类型(下面解释);

3。 设置设置代理;

4. 如果必须做截图修改的话更改allowsEditing =yes。

快3网上购买数据来源类型一共有三种:

 enum {
    UIImagePickerControllerSourceTypePhotoLibrary ,//来自图库
    UIImagePickerControllerSourceTypeCamera ,//来自相机
    UIImagePickerControllerSourceTypeSavedPhotosAlbum //来自相册
 };

在用这种来源的之后最好检测下面设备能否支持;

  if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
     {
         NSLog(@"支持相机");
     }
     if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])
     {
         NSLog(@"支持图库");
     }
     if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum])
     {
         NSLog(@"支持相片库");
     }

调用来获取资源

ios 打开相册_ios 打开本地相册_ios 打开系统相册

 - (void)viewDidLoad {
     [super viewDidLoad];
     picker = [[UIImagePickerController alloc]init];
     picker.view.backgroundColor = [UIColor orangeColor];
     UIImagePickerControllerSourceType sourcheType = UIImagePickerControllerSourceTypeCamera;
     picker.sourceType = sourcheType;
     picker.delegate = self;
     picker.allowsEditing = YES;
 }

上面也是范例了UIImagePickerController及其属性 在必须获得照片的之后还要弹出窗口调用

 [self presentViewController:picker animated:YES completion:nil];

我们还必须代理来获得我们选中的截图

UIImagePickerControllerDelegate

快3网上购买代理中一共三个方法 其中一个3.0 已经废弃了,只剩下两个我们应该用的

 - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary
  *)info;

当用户选择完成后调用;

ios 打开本地相册_ios 打开相册_ios 打开系统相册

 - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;

当用户更改选择时调用;

 - (void)imagePickerController:(UIImagePickerController *)picker
  didFinishPickingMediaWithInfo:(NSDictionary *)info;

选取的信息都在info中ios 打开相册,info 是一个字典。

字典中的键:

获取最近的一张图片

最近的需求应该我模仿微信聊天提示最新的一张图片这个功能。

先讲讲思路。

ios 打开相册_ios 打开本地相册_ios 打开系统相册

思路很简单ios 打开相册,点击“+”号的之后获得相册列表,获取最新保存的一张图片。根据照片保存时间,与当前时间戳进行计算,获得间隔时间。从而判定是否是意愿的时间间隔。(时间间隔自定义)

计算公式:当前时间 - 图片保存时间 <= 时间间隔

那么按照这个想法就起初写一个分类。

它是关于ALAssetsLibrary的获得功能,那么就按照他写一个分类。

但是在iOS9后这个库过时了,不过还是将他封装一份,到时候新建一个工具类进行适配就行了。

 //ALAssetsLibrary+WJ.h
 #import <AssetsLibrary/AssetsLibrary.h>
 @interface ALAssetsLibrary (WJ)
 /**
  *  获取最新一张图片
  *
  *  @param block 回调
  */
 - (void)latestAsset:(void(^_Nullable)(ALAsset * _Nullable asset,NSError *_Nullable error)) block;
 @end
 //ALAssetsLibrary+WJ.m
 #import "ALAssetsLibrary+WJ.h"
 @implementation ALAssetsLibrary (WJ)
 - (void)latestAsset:(void (^)(ALAsset * _Nullable, NSError *_Nullable))block {
     [self enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
         if (group) {
             [group setAssetsFilter:[ALAssetsFilter allPhotos]];
             [group enumerateAssetsWithOptions:NSEnumerationReverse/*遍历方式*/ usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
                 if (result) {
                     if (block) {
                         block(result,nil);
                     }
                     *stop = YES;
                 }
             }];
             *stop = YES;
         }
     } failureBlock:^(NSError *error) {
         if (error) {
             if (block) {
                 block(nil,error);
             }
         }
     }];
 }
 @end

在iOS8 PhotoKit已经存在了。所以之后写iOS8以上的应用可以直接使用。

快3网上购买PhotoKit简单实用封装。具体详尽性能请看参考提供的链接。

 //PHAsset+WJ.h
 #import <Photos/Photos.h>
 @interface PHAsset (WJ)
 /**
  *  获取最新一张图片
  */
 + (PHAsset *)latestAsset;
 @end
 //PHAsset+WJ.m
 #import "PHAsset+WJ.h"
 @implementation PHAsset (WJ)
 + (PHAsset *)latestAsset {
     // 获取所有资源的集合,并按资源的创建时间排序
     PHFetchOptions *options = [[PHFetchOptions alloc] init];
     options.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO]];
     PHFetchResult *assetsFetchResults = [PHAsset fetchAssetsWithOptions:options];
     return [assetsFetchResults firstObject];
 }
 @end

根据需求本文章不提供其它用途写法(ps:最主要本人也才刚使用>.<)。

图片保存时间 都可以在对应的asset(PHAsset,AlAsset)里面获得到。


本文来自电脑杂谈,转载请注明本文网址:
http://www.kadakong.com/a/ruanjian/article-121437-1.html

    相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    快3网 北京赛车pk10投注 广西快3开奖 云南11选5走势图 状元彩票开户 广发彩票 万发彩票平台 快3在线投注 快赢彩票投注 极速快乐8群