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

   今天做的项目需要通过自定义的导航栏中添加一个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);

          

        }];

    }

}




在Flutter,要在Card组件自定义导航栏,通常我们会创建一个新的Widget,并将其作为`AppBar`的一部分。`AppBar`是一个顶部的头部区域,包含标题、返回按钮(如果需要的话)、以及可以添加自定义内容的部分。以下是简单的步骤: 1. 首先,导入必要的库: ```dart import 'package:flutter/material.dart'; ``` 2. 创建一个自定义`AppBar` widget,比如`CustomAppBar`: ```dart class CustomAppBar extends StatelessWidget { final Function() onPressed; // 返回按钮点击回调 @override Widget build(BuildContext context) { return AppBar( elevation: 0, // 控制阴影效果,0表示无阴影 leading: IconButton( icon: Icon(Icons.arrow_back), onPressed: onPressed, ), title: Text('自定义标题'), // 标题文字 actions: [], // 可选的右侧操作按钮 backgroundColor: Colors.white, // 设置背景颜色 automaticallyImplyLeading: false, // 防止默认的回退手势 bottom: PreferredSizeDelegate( preferredSize: Size.fromHeight(56), // 自定义底部高度 child: Container(), // 可在此处添加自定义布局,如一个心图标或文本 ), ); } } ``` 3. 在显示Card的地方,将自定义`AppBar`应用到`Scaffold`上: ```dart Scaffold( appBar: CustomAppBar(onPressed: () {}), // 这里提供一个回调函数给自定义返回按钮 body: Card( child: YourCardContent(), // Card的实际内容 ), ); ``` 在这个例子,你需要根据实际需求调整`onPressed`回调函数,以及自定义底部部分的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值