iOS红马甲项目Bug总结(2)

背景:iOS调用相机和访问图库

一、调用相机或图库:

-(void)imgviewClick

{

ALAuthorizationStatus author = [ALAssetsLibrary authorizationStatus];

AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];

UIAlertController *alertvc=[UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];

UIAlertAction *cameraAction =[UIAlertAction actionWithTitle:@"相机" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

UIImagePickerController *picker=[[UIImagePickerController alloc]init];

if(authStatus == ALAuthorizationStatusRestricted || authStatus == ALAuthorizationStatusDenied){

[self resultHud:@"请在设置中打开您的相机权限!"];

//            // 无权限 引导去开启相机

//            NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];

//            if ([[UIApplication sharedApplication]canOpenURL:url]) {

//                [[UIApplication sharedApplication]openURL:url];

return;

}

else{

if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])

{

picker.sourceType=UIImagePickerControllerSourceTypeCamera;

picker.editing=YES;

picker.allowsEditing=YES;

picker.delegate=self;

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

}

else

{

[self resultHud:@"未检测到相机!"];

}

}

}];

UIAlertAction *libraryAction =[UIAlertAction actionWithTitle:@"照片图库" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

UIImagePickerController *picker=[[UIImagePickerController alloc]init];

if(author == ALAuthorizationStatusRestricted || author == ALAuthorizationStatusDenied){

[self resultHud:@"请在设置中打开您的相册权限!"];

//            NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];

//            if ([[UIApplication sharedApplication] canOpenURL:url]) {

//                [[UIApplication sharedApplication] openURL:url];

//            }

return;

}

else{

if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])

{

picker.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;

picker.editing=YES;

picker.allowsEditing=YES;

picker.delegate=self;

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

}

else

{

[self resultHud:@"未检测到图库!"];

}

}

}];

UIAlertAction *cancleAction=[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];

[alertvc addAction:libraryAction];

[alertvc addAction:cameraAction];

[alertvc addAction:cancleAction];

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

}

??注意:1、为什么打开图库后 或者打开相机操作完之后,一直不会返回你原先的界面:   [self presentViewController:alertvc animated:YES completion:nil];

因为你需要将pickerviewcontroller dimiss掉,pickerviewcontroller 的调用就是通过原控制器调用present方法实现的,所以可以用dismiss关闭

2、灰色部分表示,直接调用应用程序的设置界面,带领用户去开启权限

二、编辑选择的图片并关闭图像选择控制器

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info

{

NSLog(@"info--->%@",info);

UIImage *originaImage =[info objectForKey:UIImagePickerControllerEditedImage];

_headimgView.image=originaImage;

originaImage=[self imageWithImage:originaImage scaledToSize:CGSizeMake(IMG_SECTION_HEIGHT,IMG_SECTION_HEIGHT)];

[self dismissViewControllerAnimated:YES completion:nil];

}

可以在图像编辑中完成你之后想借用相机选择图片之后,要实现的例如上传图像等操作

??注意:我这里打印出来的info 就是图像选择器完成之后,返回的数据,根据打印出来的数据你可以发现,返回的图像有两种类型

1、UIImagePickerControllerEditedImage 2、UIImagePickerControllerOriginaImage

UIImagePickerControllerEditedImage 这个代表你在图像选择器中选择的图片在选择框中是怎么样的返回的就是怎么样的

UIImagePickerControllerOriginaImage 这个表示,不管你在图像选择器的选择框内将图片是方法还是缩小,返回的都是原图,未经过任何操作。

时间: 2024-10-22 13:38:10

iOS红马甲项目Bug总结(2)的相关文章

iOS红马甲项目开发过程Bug总结(1)

在上线审核时,重新检测自己的app发现报错:"was compiled with optimization - steppingmay behave oddly; variables may not be available" 在运行的时候进行调试,发现当我po参数的时候,一直告诉我 变量不可用. 解决: 在xcode->project->scheme->edit scheme ->在Run选项中 将Bulid Configuration 改选为debug 因为

iOS开发项目篇—44会员处理

iOS开发项目篇—44会员处理 一.简单说明 查看已经完成的效果: 存在的问题和调整: (1)时间和昵称之间的间距较大,调整*0.5. (2)转发微博的用户昵称和微博正文间距较大,调整(2). (3).微博来源设置为亮灰色 打开微博来源,修改之前存在的一个bug. 设置颜色为亮灰色 (4).设置时间字体为橙色. 上面一系列调整完成之后的显示效果为: 二.会员设置 1.说明 微博的用户分为会员和非会员,而根据是否是会员,用户昵称的颜色也不一样,会员显示为橙色,普通用户显示为黑色. 哪些属性是何用户

iOS开源项目之日志框架CocoaLumberjack

iOS开源项目之日志框架CocoaLumberjack CocoaLumberjack是Mac和iOS上一个集快捷.简单.强大和灵活于一身的日志框架.CocoaLumberjack类似于流行的日志框架(如log4j),但它是专为Objective-C设计的,利用了多线程.GCD(如果可用).无锁原 CocoaLumberjack是Mac和iOS上一个集快捷.简单.强大和灵活于一身的日志框架.CocoaLumberjack类似于流行的日志框架(如log4j),但它是专为Objective-C设计的

iOS开发项目篇—41cell的frame的细节处理

iOS开发项目篇—41cell的frame的细节处理 一.简单说明 在首页控制器中使用自定义的UITableViewcell 代码如下: YYHomeTableViewController.m文件 1 // 2 // YYHomeTableViewController.m 3 // 4 5 #import "YYHomeTableViewController.h" 6 #import "YYOneViewController.h" 7 #import "Y

iOS开发项目篇—35封装网络请求

iOS开发项目篇—35封装网络请求 一.简单说明 1.分析项目对网路请求(AFN框架)的依赖 项目中,多个控制器都使用了AFN框架发送网络请求,如果AFN2.0存在重大BUg,或者是升级至3.0版本,那么对于整个项目都是及其危险的,所有用到AFN的地方都需要做出相应的修改. 另外,如果现在要求不再使用AFN框架,而是使用一个新的框架,那么有关AFN的依赖所关联的所有代码都需要重新来过. 如果把afn这个第三方框架从项目中删除的话,那么项目就相当于作废了,这就是项目对第三方框架的强依赖的体现. 说

快速定位iOS线上BUG在哪个控制器崩溃

快速定位iOS线上BUG在哪个控制器崩溃 快速定位iOS线上App崩溃在哪个控制器里面,需要和后台配合使用 下载本项目并添加手动添加到项目里 新建所有的页面都继承于YZViewController 在AppDelegate的didFinishLaunchingWithOptions方法里面写下如下代码: if ([[[NSUserDefaults standardUserDefaults] valueForKey:@"BUG"] isKindOfClass:[NSDictionary

iOS开发项目-02添加子控制器以及项目分层

iOS开发项目-02添加子控制器以及项目分层 一.添加子控制器 1.设置根控制器(自定义) 说明:分析新浪微博应用,观察其整体建构层次.而系统的控制器不能满足项目开发的需求,这里把项目中原有的控制器删除. 自己定义一个TabBarViewController类.让这个类作为window窗口的根控制器. YYAppDelegate.m文件代码: 1 #import "YYAppDelegate.h" 2 #import "YYTabBarViewController.h&quo

iOS开源项目周报0428

由OpenDigg 出品的iOS开源项目周报第十八期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. BouncyLayout 带弹力单元格的集合视图 v2ex iOS非官方V2EX应用 TweenKit 强大的动画库 Fire-in-Swift 轻量级HTTP及HTTPS网络框架 Water 渲染水波效果的简单算法 Toolbar 更具交互性的工具栏 Placeholders 定义多个UITextField占

GitHub上有很多不错的iOS开源项目

GitHub上有很多不错的iOS开源项目,个人认为不错的,有这么几个:1. ReactiveCocoa:ReactiveCocoa/ReactiveCocoa · GitHub:GitHub自家的函数式响应式编程范式的Objective-C实现,名字听着很高大上,学习曲线确实也比较陡,但是绝对会改变你对iOS编程的认知,首推之.2. Mantle:Mantle/Mantle · GitHub:又是GitHub自家的产物,轻量级建模的首选,也可以很好的配合CoreData工作.3. AFNetwo