关于在自定义的导航栏中使用UIImagePickerViewControlle

本文解决了一个自定义UIImagePickerViewController时遇到的问题——导航栏上的取消按钮无响应。通过实现代理方法,如imagePickerControllerDidCancel及navigationController:willShowViewController:animated:等,成功修复了该问题,并详细介绍了如何裁剪、保存图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   今天做的项目需要通过自定义的导航栏中添加一个UIImagePickerViewControlle,但是添加之后发现无法正常显示导航栏的取消按钮无反应。后来通过查明,其实是内部实现了一些可以用的代理方法,只是没有去调用而已。具体的详情可以看用UIImagePickerViewController自定义相机界面  http://blog.sina.com.cn/s/blog_aedec703010181sh.html

 现总结几个方法如下:

1.单点击取消按钮的时候会调用一下的方法

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{

    NSLog(@"点击了取消按钮");


2.点击确定的时候回调用以下方法

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

3.也是最苦人的一点,因为以为是系统的控制器无法调用,所以想不到方法去修改,其实以下的方法中可以使用

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated

  然后我把具体的方法实现发表如下吧:

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{

    NSLog(@"点击了取消按钮");

    [picker dismissViewControllerAnimated:YEScompletion:nil];

}


- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated


{

    

    [[UIApplicationsharedApplication] setStatusBarHidden:NO];

    

    [[UIApplicationsharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];

    

    UIView *custom = [[UIViewalloc] initWithFrame:CGRectMake(0,0,0,0)];

    

    UIBarButtonItem *btn = [[UIBarButtonItemalloc] initWithCustomView:custom];

    [viewController.navigationItem setRightBarButtonItem:btn animated:NO];

    

    

}


- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

{

    {

        UIImage *originImage = [infovalueForKey:UIImagePickerControllerEditedImage];

        

        CGSize cropSize;

        cropSize.width = 180;

        cropSize.height = cropSize.width * originImage.size.height / originImage.size.width;

        

        NSDate *date = [NSDatedate];

        NSDateFormatter *formatter = [[NSDateFormatteralloc] init];

        [formatter setDateFormat:@"yyyyMMddHHmmss"];

        

        originImage = [originImage imageByScalingToSize:cropSize];

        

        NSData *imageData = UIImageJPEGRepresentation(originImage, 0.9f);

        

        NSString *uniqueName = [NSStringstringWithFormat:@"%@.jpg",[formatterstringFromDate:date]];

        NSString *uniquePath = [kDocumentsPathstringByAppendingPathComponent:uniqueName];

        

        NSLog(@"uniquePath: %@",uniquePath);

        

        [imageData writeToFile:uniquePath atomically:NO];

        

        NSLog(@"Upload Image Size: %u KB",[imageData length] /1024);

      

        [picker dismissViewControllerAnimated:YEScompletion:^{

            

           [self.delegaterefleshWithfaceData:originImage];

            NSLog(@"originImage==================%@",originImage);

          

        }];

    }

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值