zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

iOS 打开系统相册和使用相机

ios系统 打开 相机 相册 使用
2023-09-14 08:57:56 时间
代码:

 code style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: Source Code Pro, monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;" 

 span #import span UIKit/UIKit.h /span /span 

 span span @interface /span span ViewController /span : span UIViewController /span span UITextViewDelegate /span , span UIActionSheetDelegate /span , span UINavigationControllerDelegate /span , span UIImagePickerControllerDelegate /span /span 

 span //输入框 /span 

 span UITextView /span *_textEditor;

 span //下拉菜单 /span 

 UIActionSheet *myActionSheet;

 span //图片2进制路径 /span 

 span NSString /span * filePath;

 span @end /span /code ul li 1 /li li 2 /li li 3 /li li 4 /li li 5 /li li 6 /li li 7 /li li 8 /li li 9 /li li 10 /li li 11 /li li 12 /li li 13 /li li 14 /li /ul 

ViewController.m

代码:

 code style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: Source Code Pro, monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;" span #import span "ViewController.h" /span /span 

 span span @interface /span span ViewController /span () /span 

 span @end /span 

 span span @implementation /span span ViewController /span /span 

- ( span void /span )viewDidLoad {

 [ span super /span viewDidLoad];

 span UIButton /span *button = [[ span UIButton /span alloc]init];

 button span .frame /span = CGRectMake( span 0 /span , span 120 /span , span 80 /span , span 80 /span 

 button span .backgroundColor /span = [ span UIColor /span redColor];

 [button addTarget: span self /span action: span @selector /span (openMenu) forControlEvents:UIControlEventTouchUpInside];

 [ span self /span span .view /span addSubview:button];

 span float /span i = [ span self /span fileSizeForDir:NSHomeDirectory()];

 span NSLog /span (@ span "%f" /span , i);


destructiveButtonTitle: span nil /span otherButtonTitles: @ span "打开照相机" /span , @ span "从手机相册获取" /span , span nil /span [myActionSheet showInView: span self /span span .view /span - ( span void /span )actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:( span NSInteger /span )buttonIndex span //呼出的菜单按钮点击后的响应 /span span if /span (buttonIndex == myActionSheet span .cancelButtonIndex /span ) span NSLog /span (@ span "取消" /span span switch /span (buttonIndex) span case /span span 0 /span : span //打开照相机拍照 /span [ span self /span takePhoto]; span break /span span case /span span 1 /span : span //打开本地相册 /span [ span self /span LocalPhoto]; span break /span span //开始拍照 /span -( span void /span )takePhoto UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera; span if /span ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]) UIImagePickerController *picker = [[UIImagePickerController alloc] init]; picker span .delegate /span = span self /span span //设置拍照后的图片可被编辑 /span span // picker.allowsEditing = YES; /span picker span .sourceType /span = sourceType; [ span self /span presentModalViewController:picker animated: span YES /span } span else /span span NSLog /span (@ span "模拟其中无法打开照相机,请在真机中使用" /span span //打开本地相册 /span -( span void /span )LocalPhoto UIImagePickerController *picker = [[UIImagePickerController alloc] init]; picker span .sourceType /span = UIImagePickerControllerSourceTypePhotoLibrary; picker span .delegate /span = span self /span span //设置选择后的图片可被编辑 /span span // picker.allowsEditing = YES; /span [ span self /span presentModalViewController:picker animated: span YES /span span //当选择一张图片后进入这里 /span -( span void /span )imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:( span NSDictionary /span *)info span NSString /span *type = [info objectForKey:UIImagePickerControllerMediaType]; span //当选择的类型是图片 /span span if /span ([type isEqualToString:@ span "public.image" /span ]) span //先把图片转成NSData /span span UIImage /span * image = [info objectForKey:@ span "UIImagePickerControllerOriginalImage" /span NSData *data; span if /span (UIImagePNGRepresentation(image) == span nil /span ) data = UIImageJPEGRepresentation(image, span 1.0 /span span else /span data = UIImagePNGRepresentation(image); span //图片保存的路径 /span span //这里将图片放在沙盒的documents文件夹中 /span span NSString /span * DocumentsPath = [NSHomeDirectory() stringByAppendingPathComponent:@ span "Documents" /span span //文件管理器 /span span NSFileManager /span *fileManager = [ span NSFileManager /span defaultManager]; span //把刚刚图片转换的data对象拷贝至沙盒中 并保存为image.png /span [fileManager createDirectoryAtPath:DocumentsPath withIntermediateDirectories: span YES /span attributes: span nil /span error: span nil /span [fileManager createFileAtPath:[DocumentsPath stringByAppendingString:@ span "/image.png" /span ] contents:data attributes: span nil /span span //得到选择后沙盒中图片的完整路径 /span filePath = [[ span NSString /span alloc]initWithFormat:@ span "%@%@" /span ,DocumentsPath, @ span "/image.png" /span span //关闭相册界面 /span [picker dismissModalViewControllerAnimated: span YES /span span //创建一个选择后图片的小图标放在下方 /span span //类似微薄选择图后的效果 /span span UIImageView /span *smallimage = [[ span UIImageView /span alloc] initWithFrame: CGRectMake( span 50 /span , span 120 /span , span 40 /span , span 40 /span smallimage span .image /span = image; span //加在视图中 /span [ span self /span span .view /span addSubview:smallimage]; - ( span void /span )imagePickerControllerDidCancel:(UIImagePickerController *)picker span NSLog /span (@ span "您取消了选择图片" /span [picker dismissModalViewControllerAnimated: span YES /span -( span void /span )sendInfo span NSLog /span (@ span "图片的路径是:%@" /span , filePath); - ( span float /span )fileSizeForDir:( span NSString /span *)path span //计算文件夹下文件的总大小 /span span NSFileManager /span *fileManager = [[ span NSFileManager /span alloc] init]; span float /span size = span 0 /span span NSArray /span * array = [fileManager contentsOfDirectoryAtPath:path error: span nil /span span for /span ( span int /span i = span 0 /span i [array count]; i++) span NSString /span *fullPath = [path stringByAppendingPathComponent:[array objectAtIndex:i]];
span NSDictionary /span *fileAttributeDic=[fileManager attributesOfItemAtPath:fullPath error: span nil /span size+= fileAttributeDic span .fileSize /span / span 1024.0 /span / span 1024.0 /span span else /span [ span self /span fileSizeForDir:fullPath];
[ span super /span viewDidUnload]; span // any retained subviews of the main view. /span - ( span BOOL /span )shouldAutorotateToInterfaceOrientation:( span UIInterfaceOrientation /span )interfaceOrientation span return /span (interfaceOrientation == UIInterfaceOrientationPortrait); span // Do any additional setup after loading the view, typically from a nib. /span - ( span void /span )didReceiveMemoryWarning { [ span super /span didReceiveMemoryWarning]; span // Dispose of any resources that can be recreated. /span span @end /span /code ul li 1 /li li 2 /li li 3 /li li 4 /li li 5 /li li 6 /li li 7 /li li 8 /li li 9 /li li 10 /li li 11 /li li 12 /li li 13 /li li 14 /li li 15 /li li 16 /li li 17 /li li 18 /li li 19 /li li 20 /li li 21 /li li 22 /li li 23 /li li 24 /li li 25 /li li 26 /li li 27 /li li 28 /li li 29 /li li 30 /li li 31 /li li 32 /li li 33 /li li 34 /li li 35 /li li 36 /li li 37 /li li 38 /li li 39 /li li 40 /li li 41 /li li 42 /li li 43 /li li 44 /li li 45 /li li 46 /li li 47 /li li 48 /li li 49 /li li 50 /li li 51 /li li 52 /li li 53 /li li 54 /li li 55 /li li 56 /li li 57 /li li 58 /li li 59 /li li 60 /li li 61 /li li 62 /li li 63 /li li 64 /li li 65 /li li 66 /li li 67 /li li 68 /li li 69 /li li 70 /li li 71 /li li 72 /li li 73 /li li 74 /li li 75 /li li 76 /li li 77 /li li 78 /li li 79 /li li 80 /li li 81 /li li 82 /li li 83 /li li 84 /li li 85 /li li 86 /li li 87 /li li 88 /li li 89 /li li 90 /li li 91 /li li 92 /li li 93 /li li 94 /li li 95 /li li 96 /li li 97 /li li 98 /li li 99 /li li 100 /li li 101 /li li 102 /li li 103 /li li 104 /li li 105 /li li 106 /li li 107 /li li 108 /li li 109 /li li 110 /li li 111 /li li 112 /li li 113 /li li 114 /li li 115 /li li 116 /li li 117 /li li 118 /li li 119 /li li 120 /li li 121 /li li 122 /li li 123 /li li 124 /li li 125 /li li 126 /li li 127 /li li 128 /li li 129 /li li 130 /li li 131 /li li 132 /li li 133 /li li 134 /li li 135 /li li 136 /li li 137 /li li 138 /li li 139 /li li 140 /li li 141 /li li 142 /li li 143 /li li 144 /li li 145 /li li 146 /li li 147 /li li 148 /li li 149 /li li 150 /li li 151 /li li 152 /li li 153 /li li 154 /li li 155 /li li 156 /li li 157 /li li 158 /li li 159 /li li 160 /li li 161 /li li 162 /li li 163 /li li 164 /li li 165 /li li 166 /li li 167 /li li 168 /li li 169 /li li 170 /li li 171 /li li 172 /li li 173 /li li 174 /li li 175 /li li 176 /li li 177 /li li 178 /li li 179 /li li 180 /li li 181 /li li 182 /li li 183 /li li 18 /li /ul

最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究了一下相机的自定义。
最近在做自定义相机,然后就是iOS8要授权才能使用,如果用户拒绝,那么,就不能操作。 问题是,怎么知道用户第一次选择相机,并且应用有打开相机的权限? // 在iOS7 时,只有部分地区要求授权才能打开相机 if (floor(NSFoundationV...
[ios开发]-APP-上架流程 由于苹果的机制,在非越狱机器上安装必须通过官方的Appstore, 开发者开发好应用后上传Appstore,也需要通过审核等环节。 AppCan作为一个跨主流平台的一个开发平台,也对ipa包上传Appstore作了支持。 本文从三个流程来介绍如何实现AppCan在 线编译出ipa包,以及上传到苹果Appstore。