问题:
有时,我们需要拿到系统的相册,然后在一个VC中获取到所有相片[self getALLPhotos];
,然而,当第一次访问系统相册时,是会系统弹出用户授权窗口的,问题在于用户还没点击同意授权打开相册时就已经先走了[self getALLPhotos];
这个获取所有相片的方法了。最后导致首次用户去授权时,[self getALLPhotos];
获取不到所有的相片。
解决方法:
我们需要在VC中获取当前应用对照片的访问授权状态,如果是非授权状态我们就去创建一个计时器,让其每0.2S去走一次(void)observeAuthrizationStatusChange:(NSTimer *)timer
这个方法,
在上面那个方法内去判断当已授权时,再次去[self getALLPhotos]
。这样就达到了实时去检测授权状态,一旦用户点击同意打开相册,则再次请求一次所有照片。具体实现代码如下:
- (void)viewDidLoad {
[super viewDidLoad];
[self setNavigationBariew];
[self creatMyView];
[self getALLPhotos];
// 获取当前应用对照片的访问授权状态
if ([PHPhotoLibrary authorizationStatus] != PHAuthorizationStatusAuthorized) {
self.timer = [NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(observeAuthrizationStatusChange:) userInfo:nil repeats:YES];
}
}
- (void)observeAuthrizationStatusChange:(NSTimer *)timer
{
/** 当用户已授权 */
if ([PHPhotoLibrary authorizationStatus] == PHAuthorizationStatusAuthorized) {
[timer invalidate];
self.timer = nil;
[self getALLPhotos];
}
}
至于如何去获取所有照片[self getALLPhotos]
,可看本人上篇文章。
ps:如阅读后对您有一丢丢帮助,(__) ....麻烦随手点个赞,那将是对我最大的激励。O(∩_∩)O谢谢。。。。