FirstApp,iphone开发学习总结7,相机

首先需要一个Nav,在FirstAppAppDelegate.m里添加:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
     // ...
    ImageViewController *imgTab = [[ImageViewController alloc] init];
    UINavigationController *navImg = [[UINavigationController alloc] initWithRootViewController:imgTab]; //添加
    
    NSArray *tabArray = [[NSArray alloc] initWithObjects: navImg, tableTab, btnTab, textTab, navigation, nil]; //修改
    [navImg release]; //添加
     // ...
}

进入ImageViewController.h文件,添加委托,并创建imageView变量:

@interface ImageViewController : UIViewController<UIImagePickerControllerDelegate, UINavigationControllerDelegate>{
    UIImageView *imageView;
} //UIImagePickerControllerDelegate继承至UINavigationControllerDelegate

ImageViewController.m的- viewDidLoad略做修改,并添加相机按钮: // 直接使用UIBarButtonSystemItemCamera了
- ( void)viewDidLoad
{
    imageView = [[UIImageView alloc] initWithFrame:CGRectMake( 50.050.048.048.0)];
    imageView.image = [UIImage imageNamed: @" China.gif "];
    imageView.contentMode = UIViewContentModeScaleAspectFit;
    [self.view addSubview:imageView];
    [imageView release];
        
    UIBarButtonItem *imgRightBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(openCamera:)];
    [[self navigationItem] setRightBarButtonItem:imgRightBtn];
}

实现按钮事件:

- ( void)openCamera:(id)sender
{
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; // initWithRootViewController:
     if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
        [imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
    } else {
        [imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
    }
    [imagePicker setDelegate:self];
    [self presentModalViewController:imagePicker animated:YES];
    [imagePicker release];
}

 此处代码:

     isSourceTypeAvailable判定此设备是否支持相机,不然从图片目录获取图片。

     UIImagePickerController实例以模态展示,需要presentModalViewController它。

     souceType分别代表:Camera(打开相机),PhotoLibrary(打开相册),SavedPhotoAlbums(最近拍摄)

 

图片选择完成,则触发委托事件:

- ( void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
    [imageView setImage:image];
    
    [self dismissModalViewControllerAnimated:YES];
}

 如果关闭了界面,则取消操作,触发:

imagePickerControllerDidCancel:

可以工作了,此处的一个问题就是当拍摄图片过大,内存警告回收资源,图片则不会显示。通过保存图片等操作解决,后面说。

 

求指点!

转载于:https://www.cnblogs.com/maxfong/archive/2012/05/04/2482847.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值