Application tried to present modally an active controller <UIImagePickerController: 0x7b6ff400>

1,AddGestureRecognizer为图片视图添加事件

 //圆角头像_avatarView = new UIImageView(new RectangleF(_blockSpace, _blockSpace, 2 * _avatarRadius, 2 * _avatarRadius));
UIImage img = UIImage.FromFile("profile-pic.jpg");
_avatarView.Layer.Contents = img.CGImage;_avatarView.Layer.MasksToBounds = true;//如果没有将MasksToBounds设置为true,图片圆角无效
_avatarView.Layer.CornerRadius = _avatarRadius;_avatarView.UserInteractionEnabled = true;//用户互动属性()
_avatarView.AddGestureRecognizer(new UITapGestureRecognizer(onClickImage));

 void onClickImage(){try{//UIActionSheet是在iOS弹出的选择按钮项的对话框,可以添加多项,并为每项添加点击事件。//ChangePictureActionSheetDelegate:通过重写UIActionSheetDelegate的Clicked方法,获取当前点击项UIActionSheet _actionSheet = new UIActionSheet("选择图片",new ChangePictureActionSheetDelegate(this,_avatarView), "取消",null, "从相片库", "拍照");                _actionSheet.ShowInView(this.View);}catch (Exception e){Console.WriteLine("Error:" + e.Message);}}

UIActionSheet是在iOS弹出的选择按钮项的对话框,可以添加多项,并为每项添加点击事件。

2,获取UIActionSheet选择项

关键类:UIActionSheetDelegate。通过重写UIActionSheetDelegate的Clicked方法,获取UIActionSheet当前点击项

class ChangePictureActionSheetDelegate : UIActionSheetDelegate{UIViewController _controller;UIImageView _img;UIImagePickerController picker;public ChangePictureActionSheetDelegate(UIViewController controller,UIImageView img){_controller = controller;_img = img;}public override void Clicked(UIActionSheet actionSheet, int buttonIndex){Console.WriteLine("你选择了:" + buttonIndex);switch (buttonIndex){case 1: CallPhoto(UIImagePickerControllerSourceType.Camera); break;case 0: CallPhoto(UIImagePickerControllerSourceType.PhotoLibrary); break;default: break;}}        private void CallPhoto(UIImagePickerControllerSourceType type){Console.WriteLine("Begin...");if (UIImagePickerController.IsSourceTypeAvailable(type)){try{picker = new UIImagePickerController();picker.SourceType = type;//允许编辑图片picker.AllowsEditing = true;if (_controller.PresentedViewController == null){_controller.PresentModalViewController(picker, false);}//picker.FinishedPickingImage += picker_FinishedPickingImage;(无效)//AvatarPickerDelegate:通过重写UIImagePickerControllerDelegate的FinishedPickingImage方法获取选择的图片picker.Delegate =new AvatarPickerDelegate(_img);Console.WriteLine("Finished");}catch (Exception e){Console.WriteLine("Error:" + e.Message);}}else{Console.WriteLine("该设备不支持此操作");}}}

3,获取选择的图片

关键类:UIImagePickerControllerDelegate。通过重写UIImagePickerControllerDelegate的FinishedPickingImage方法获取选择的图片

class AvatarPickerDelegate:UIImagePickerControllerDelegate {UIImageView _avatar;public AvatarPickerDelegate(UIImageView _imgView) {_avatar = _imgView;}        public override void FinishedPickingImage(UIImagePickerController picker, UIImage image, NSDictionary editingInfo){Console.WriteLine("选择了图片");if (image == null){Console.WriteLine("Null");}//更新显示图片_avatar.Layer.Contents = image.CGImage;//关闭UIImagePickerpicker.DismissModalViewControllerAnimated(true);Console.WriteLine("完成选择");}}

  



转载于:https://www.cnblogs.com/Sunlimi/p/UIImagePicker.html

【Xamarin】MonoTouch - iOS 使用 UIImagePickerController 打开图片库和相机选择图片修改头像...相关推荐

  1. Swift使用UIImagePickerController 从相册选择图片、从相机选择图片

    配置: 如果是相机使用,需要在info.plist文件增加使用前应用程序说明:相机使用也是如此.(第二个是CALENDARS权限,打错了:图片是Photo Library Usage Descript ...

  2. android调取手机相册或打开相机选择图片并显示

    作为一个android小白,自己想尝试写一个小项目,因此写个小博客记录一下自己的开发历程.这一篇记录自己学习调取手机相册以及打开相机选择图片并显示 示例是采用PopupWindow弹出底部菜单,选择相 ...

  3. 微信小程序 — 打开相册选择图片功能

    点击页面的相册按钮如何打开系统相册.选择图片: <text class="nav-item1" bindtap="navToalbum">相册< ...

  4. XamarinSQLite教程Xamarin.iOS项目中打开数据库文件

    XamarinSQLite教程Xamarin.iOS项目中打开数据库文件 以下是打开MyDocuments.db数据库的具体操作步骤: (1)将Mac电脑上的MyDocuments.db数据库移动到W ...

  5. xamarin android上传图片到服务器,从图片库中选取照片

    从图片库中选取照片Picking a Photo from the Picture Library 03/06/2017 本文内容 本文介绍如何创建一种应用程序,使用户可通过该应用程序从手机的图片库中 ...

  6. Swift学习笔记(4)使用UIImagePickerController实现从设备图片库和照相机获取图片

    Swift学习笔记(4)使用UIImagePickerController实现从设备图片库和照相机获取图片 设备图片库和照相机是图像的两个重要来源,使用UIKit中提供的图像选择器UIImagePic ...

  7. Visual Studio 2013 Xamarin for iOS 环境搭建

    原文:Visual Studio 2013 Xamarin for iOS 环境搭建 一.Mac安装Xamarin.iOS 1,我的Mac 环境:OSX 10.10.3.Xcode 6.3.2 (使用 ...

  8. 【Ios】 Unity for iOS 打开相册、相机及保存图片到相册

    偶然在网上看到一位博主写的 unity 和ios 交互 个人感觉 功能很全 转载地址:http://blog.csdn.net/AnYuanLzh/article/details/50748928 在 ...

  9. IOS研究院之打开照相机与本地相册选择图片

    如下图所示 在本地相册中选择一张图片后,我们将他拷贝至沙盒当中,在客户端中将它的缩略图放在按钮旁边,这个结构其实和新浪微薄中选择图片后的效果一样.最终点击发送将按钮将图片2进制图片上传服务器. 下面我 ...

最新文章

  1. 12×××求职经过-之求职信
  2. C语言 字符串前加L的意义 如:L“A”
  3. 微软向.NET开发者开放Windows Phone 7 Market
  4. 智能骨传导眼镜vue_穿戴设备迎新机遇,智能音频眼镜或将是下一个风口
  5. jquery动态加载JS【方法getScript】的改进
  6. 完成AOP 顶层设计-CglibAopProxy
  7. [Java基础]final和static修饰符
  8. JavaFX 2.0示例介绍书
  9. 『转』图解硬件特性!
  10. Struts与Hibernate整合完成一个小案例
  11. CentOS 6.5 端口转发
  12. 游戏反编译工具dnSpy
  13. Linux学习笔记(四)Linux基础操作
  14. Android APP跳转微信小程序和APP跳转支付宝小程序传参
  15. stm32入门(四): 串口
  16. 工程车辆监控管理系统方案
  17. 白日梦想家(The Secret Life of Walter Mitty)观后
  18. 记一次linux redhat 7.4 maipo单用户模式恢复文件
  19. 中兴通讯年报或亏损29亿 (zz)
  20. 《程序员的自我修养-Ch7_动态链接》

热门文章

  1. c语言如何求一个数学表达式的值,浅谈C语言中表达式的求值
  2. rpm方式在centos7中安装mysql
  3. Leave the world behind,山巅雪莲的再次绽放
  4. http地址后面加上问号?防止IE缓存
  5. centos6配置固定ip地址(选择桥接模式)
  6. Linux中如何使用帮助
  7. Ubuntu16.04下部署 nginx+uwsgi+django1.9.7(虚拟环境pyenv+virtualenv)
  8. [图像]张正友论文翻译(2)
  9. ecshop二次开发 给商品添加自定义字段【包含我自己进一步的开发实例详解】
  10. Leetcode | Pow(x, n)