• IOS开发之小实例--使用UIImagePickerController创建一个简单的相机应用程序


    前言:本篇博文是本人阅读国外的IOS Programming Tutorial的一篇入门文章的学习过程总结,难度不大,因为是入门。主要是入门UIImagePickerController这个控制器,那么这个控制器是干嘛的呢?就是调用设备摄像机功能用的。到后面可能需要您在真机上测试,因为iPhone模拟器无法支持摄像机功能,运行测试会崩溃的哦。

    网址:http://www.appcoda.com/ios-programming-camera-iphone-app

    其实我就按照这篇博文的讲解过程,自己做了一遍,也敲了一遍代码,很快就熟悉了这个UIImagePickerController是啥玩意了。

    为了帮助您了解的UIImagePickerController的使用,我们将构建一个简单的摄像头应用程序。该示例应用程序非常简单:我们将有一个主窗口有一个大的UIImageView显示选中的照片,和两个按钮:一个用于拍摄新照片,而另一个选择从照片库中的照片。

    1、首先简单的创建一个工程,然后在storyboard和对应的.m文件中添加相关的代码,这个简明教程没有使用自动布局,不多说,看图识字:

    2、下面是这个ViewController.m的完整实现:

     1 #import "ViewController.h"
     2 
     3 @interface ViewController () <UIImagePickerControllerDelegate,UINavigationControllerDelegate>
     4 
     5 @property (strong, nonatomic) IBOutlet UIImageView *imageView;
     6 
     7 @end
     8 
     9 @implementation ViewController
    10 
    11 - (void)viewDidLoad {
    12     [super viewDidLoad];
    13     
    14     // 这段代码会自动判断当前设备是否有摄像机功能,如果没有,会弹窗提示
    15     if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
    16         
    17         UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"Error"
    18                                                               message:@"Device has no camera"
    19                                                              delegate:nil
    20                                                     cancelButtonTitle:@"OK"
    21                                                     otherButtonTitles: nil];
    22         
    23         [myAlertView show];
    24         
    25     }
    26 }
    27 - (IBAction)takePhotot:(UIButton *)sender {
    28     // 创建UIImagePickerController控制器对象
    29     UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    30     picker.delegate = self;
    31     picker.allowsEditing = YES;
    32     picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    33     
    34     [self presentViewController:picker animated:YES completion:nil];
    35 }
    36 - (IBAction)selectPhoto:(UIButton *)sender {
    37     // 创建UIImagePickerController控制器对象
    38     UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    39     picker.delegate = self;
    40     picker.allowsEditing = YES;
    41     picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    42     
    43     [self presentViewController:picker animated:YES completion:nil];
    44 }
    45 #pragma mark - 代理方法
    46 -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{
    47     UIImage* chosenImage = info[UIImagePickerControllerEditedImage];
    48     self.imageView.image = chosenImage;
    49     
    50     [picker dismissViewControllerAnimated:YES completion:nil];
    51 }
    52 -(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{
    53     [picker dismissViewControllerAnimated:YES completion:nil];
    54 }
    55 
    56 @end

    就这部分代码,别的没有了哦。
    最后用你的真机测试使用一下哦。

  • 相关阅读:
    【PHP】PHP代码处理(普通/不重要的)并发情况,例如pv统计(不使用MySQL行或表锁、避免程序冗余)
    【MySQL】mysql慢查询日志文件
    Codeblocks: 关闭括号自动补全
    Linux C: 从指定路径中获取文件名
    MediaPlayer: android 利用mediaplayer播放音频停止后出现mediaplayer went away with unhandled event
    android: 取消编译过程中的结构体对齐
    Java: JNI对数组赋值并返回给Java
    android: Native 层访问assets目录
    Java: JNI返回Java对象(转)
    OpenSLES: W/AudioTrack: AUDIO_OUTPUT_FLAG_FAST denied by client; transfer 1, track 44100 Hz, output 48000 Hz的问题
  • 原文地址:https://www.cnblogs.com/goodboy-heyang/p/5403947.html
Copyright © 2020-2023  润新知