如何获得5张灵体这张图

iOS App中调用相册中图片及获取最近的一张图片的方法
转载 &更新时间:日 09:16:37 & 作者:WhoJun
这篇文章主要介绍了iOS App中调用相册中图片及获取最近的一张图片的方法,示例代码为传统的Objective-C语言,需要的朋友可以参考下
UIImagePickerController从拍照、图库、相册获取图片
iOS 获取图片有三种方法:
1. 直接调用摄像头拍照
2. 从相册中选择
3. 从图库中选择
UIImagePickerController 是系统提供的用来获取图片和视频的接口;
用UIImagePickerController 类来获取图片视频,大体分为以下几个步骤:
1. 初始化UIImagePickerController 类;
2. 设置UIImagePickerController 实例的数据来源类型(下面解释);
3. 设置设置代理;
4. 如果需要做图片修改的话设置allowsEditing =yes。
数据来源类型一共有三种:
&& UIImagePickerControllerSourceTypePhotoLibrary ,//来自图库
&& UIImagePickerControllerSourceTypeCamera ,//来自相机
&& UIImagePickerControllerSourceTypeSavedPhotosAlbum //来自相册
在用这些来源的时候最好检测以下设备是否支持;
&if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
&&&&&&& NSLog(@"支持相机");
&&& if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])
&&&&&&& NSLog(@"支持图库");
&&& if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum])
&&&&&&& NSLog(@"支持相片库");
调用摄像头来获取资源
- (void)viewDidLoad {
&&& [super viewDidLoad];
&&& picker = [[UIImagePickerController alloc]init];
&&& picker.view.backgroundColor = [UIColor orangeColor];
&&& UIImagePickerControllerSourceType sourcheType = UIImagePickerControllerSourceTypeC
&&& picker.sourceType = sourcheT
&&& picker.delegate =
&&& picker.allowsEditing = YES;
上面只是实例了UIImagePickerController及其属性 在需要获取图片的时候需要弹出窗口调用
[self presentViewController:picker animated:YES completion:nil];
我们还需要代理来获取我们选中的图片
UIImagePickerControllerDelegate
代理中一共三个方法 其中一个3.0 已经废弃了,只剩下两个我们需要用的
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary
当用户选取完成后调用;
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)
当用户取消选取时调用;
- (void)imagePickerController:(UIImagePickerController *)picker
&didFinishPickingMediaWithInfo:(NSDictionary *)
选取的信息都在info中,info 是一个字典。
字典中的键:
NSString *const& UIImagePickerControllerMediaT指定用户选择的媒体类型(文章最后进行扩展)
NSString *const& UIImagePickerControllerOriginalI原始图片
NSString *const& UIImagePickerControllerEditedI修改后的图片
NSString *const& UIImagePickerControllerCropR裁剪尺寸
NSString *const& UIImagePickerControllerMediaURL ;媒体的URL
NSString *const& UIImagePickerControllerReferenceURL ;原件的URL
NSString *const& UIImagePickerControllerMediaM当来数据来源是照相机的时候这个值才有效
获取最近的一张图片
最近的需求需要我模仿微信聊天提示最新的一张图片这个功能。
先讲讲思路。
思路很简单,点击“+”号的时候获取相册列表,获取最新保存的一张图片。根据图片保存时间,与当前时间戳进行计算,获得间隔时间。从而判断是否是需求的时间间隔。(时间间隔自定义)
计算公式:当前时间 - 图片保存时间 &= 时间间隔
那么根据这个思路就开始写一个分类。
它是关于ALAssetsLibrary的获取功能,那么就根据他写一个分类。
但是在iOS9后这个库过时了,不过还是将他封装一份,到时候新建一个工具类进行适配就行了。
//ALAssetsLibrary+WJ.h
#import &AssetsLibrary/AssetsLibrary.h&
@interface ALAssetsLibrary (WJ)
&*& 获取最新一张图片
&*& @param block 回调
- (void)latestAsset:(void(^_Nullable)(ALAsset * _Nullable asset,NSError *_Nullable error))
//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);
&&&&&&&&&&& }
在iOS8 PhotoKit已经存在了。所以以后写iOS8以上的应用可以直接使用。
PhotoKit简单实用封装。具体详细性能请看参考提供的链接。
//PHAsset+WJ.h
#import &Photos/Photos.h&
@interface PHAsset (WJ)
&*& 获取最新一张图片
+ (PHAsset *)latestA
//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];
根据需求本文章不提供其他功能写法(ps:最主要本人也才刚使用&.&)。
图片保存时间 都可以在对应的asset(PHAsset,AlAsset)里面获取到。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具许多自媒体无事生非,捏造事实,开局一张图,内容全靠编,怎么举 - 110网免费法律咨询
您的位置:
&& 查看咨询        今日活跃律师: &&&&&&&&&&
该问题已关闭
的回复获得奖章一枚
的回复获得奖章一枚
的回复获得奖章一枚
的回复获得奖章一枚
的回复获得奖章一枚
的回复获得奖章一枚
的回复获得奖章一枚
的回复获得奖章一枚
的回复获得奖章一枚
的回复获得奖章一枚
许多自媒体无事生非,捏造事实,开局一张图,内容全靠编,怎么举
江西-南昌市&05-02 16:52&&悬赏 0&&发布者:ask201…… & 回答:(1)
许多自媒体无事生非,捏造事实,开局一张图,内容全靠编,怎么举报这种自媒体
您也有法律问题? 您可以 发布咨询,我们的律师随时在线为您服务
[江西-南昌市]
258898积分
回复时间:
问题答案可能在这里 →
无锡推荐律师
最佳律师解答
(高宏图)()&
(郎海华)()&
(郎海华)()&
最新回复律师
北京 海淀区
人气:2380610
人气:3299
人气:700455
上海 徐汇区
人气:373982
人气:90471
人气:137560问一下研发那张图
获得人类大脑的任务怎么做_borderlands吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:99,868贴子:
问一下研发那张图
获得人类大脑的任务怎么做
我到了任务点 也杀了好多人
怎么就获得不了大脑呢?
贴吧热议榜
使用签名档&&
保存至快速回贴boss都打完了求如何获得这张图_刀剑神域失落之歌吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:22,154贴子:
boss都打完了求如何获得这张图
找不到触发事件了
失落之歌支线
额,我是打完主剧情后,去买武器强化武器的店里,跟赛文对话,触发剧情,打失落之歌,一千级的巨人,挺好打的,背景音乐是主题曲,打起来挺带感的
贴吧热议榜
使用签名档&&
保存至快速回贴}

我要回帖

更多关于 张小凡获得记忆同人文 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信