`
lizaochengwen
  • 浏览: 663048 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

UIImagePickerController在iPhone和iPad中用法的一点不同

阅读更多
我们知道,在iPhone中获取照片库常用的方法如下:

UIImagePickerController *m_imagePicker = [[UIImagePickerController alloc] init];
    if ([UIImagePickerController isSourceTypeAvailable:
         UIImagePickerControllerSourceTypePhotoLibrary]) {
        m_imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        m_imagePicker.delegate = self;
        //        [m_imagePicker.navigationBar.subviews];
        [m_imagePicker setAllowsEditing:NO];
        //m_imagePicker.allowsImageEditing = NO;
        [self presentModalViewController:m_imagePicker animated:YES];
        [m_imagePicker release];
    }else {
        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:nil message:@"Error accessing photo library!" delegate:nil cancelButtonTitle:@"Close" otherButtonTitles:nil];
        [alert show];
        [alert release];
    }

这对iPhone的操作是没有问题的。但是当我们在iPad环境中却有问题了,当我们运行时会报如下错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'On iPad, UIImagePickerController must be presented via UIPopoverController'

所以我们必须通过UIPopoverController来实现才行。具体实现如下:

UIImagePickerController *m_imagePicker = [[UIImagePickerController alloc] init];
    if ([UIImagePickerController isSourceTypeAvailable:
         UIImagePickerControllerSourceTypePhotoLibrary]) {
        m_imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        m_imagePicker.delegate = self;
        [m_imagePicker setAllowsEditing:NO];
        UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:m_imagePicker];
        self.popoverController = popover;
        //popoverController.delegate = self;
       
        [popoverController presentPopoverFromRect:CGRectMake(0, 0, 300, 300) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
       
        //[self presentModalViewController:m_imagePicker animated:YES];
        [popover release];
        [m_imagePicker release];
    }else {
        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:nil message:@"Error accessing photo library!" delegate:nil cancelButtonTitle:@"Close" otherButtonTitles:nil];
        [alert show];
        [alert release];
    }
这里需要注意,对局部UIPopoverController对象popover我们赋给了一个全局的UIPopoverController对象popoverController。而不能直接调用popover。因为在popover对象还可见时,是不能够被释放的。
原文地址:http://blog.csdn.net/fxj281314/article/details/6050588
分享到:
评论

相关推荐

    【 iPhone Device APIs,Location, Accelerometer etc.】[PDF] [iPhone/iPad/iOS]

    根据提供的文件信息,可以看出主题涉及的是苹果设备API、位置服务、加速度计、摄像头以及电池寿命和电源管理等内容,这些知识点通常被广泛应用于iOS设备上的iPhone或iPad应用程序开发。以下是对文件内容的知识点详细...

    iphone 相册、照相机的应用

    在iOS开发中,iPhone的相册和照相机功能是用户界面不可或缺的部分,它们为用户提供了一种方便的方式来管理和捕捉生活中的瞬间。本篇文章将深入探讨如何利用UIImagePickerController类来集成这些功能到你的应用程序中...

    ios拍照Demo

    9. **测试与适配**: 确保在不同的设备(iPhone/iPad)和操作系统版本上测试,因为不同设备的相机布局和用户权限可能有差异。同时,考虑到横竖屏切换的适配。 在"PhotoUpLoadDemo"这个项目中,开发者可以深入理解...

    IOS 选择图片和拍照

    不同的iOS设备可能有不同的屏幕尺寸和相机能力,因此在实现这些功能时,需要确保代码能够适应iPhone、iPad以及不同方向的屏幕。 通过以上步骤,开发者可以在iOS应用中为用户提供完整的图片选择和拍照功能。记住,...

    JPSImagePickerController:iOS 7的UIImagePickerController的完美像素克隆,并进行了一些改进

    在iPad和iPhone上均可使用。 特征: 前后摄像头切换闪光灯开/关朝多个方向拍照使用“增大音量”硬件按钮触发图片确认画面在确认画面中放大图像在确认画面中显示信息安装从CocoaPods 将pod '...

    iOS相机摄像头的调用

    - 在iPad上,`UIImagePickerController`默认显示为全屏,而在iPhone上则显示为弹出视图。你可以通过调整`modalPresentationStyle`来改变这一行为。 - 对于隐私考虑,首次访问摄像头或照片库时,系统会弹出提示,用户...

    ios 画板 手势 涂鸦

    7. **屏幕适配**:考虑到应用可能在iPhone和iPad上运行,我们需要处理屏幕尺寸差异。使用Auto Layout或Size Classes可以确保应用在不同设备上正确布局。 8. **性能优化**:在处理大量绘图操作时,需要注意性能优化...

    ZBarSDK二维码

    armv7和armv7s是针对ARM Cortex-A系列处理器的不同版本,常见于早期的iPhone和iPad。i386适用于32位的iOS模拟器,而x86_64则是针对64位的iOS模拟器。arm64是为64位ARM处理器(如Apple的A7及以后的芯片)设计的。需要...

    iOS实现获取系统iTunes音乐的方法示例

    音乐是iOS的重要组成播放,无论是iPod、iTouch、iPhone还是iPad都可以在iTunes购买音乐或添加本地音乐到音乐库中同步到你的iOS设备。 本文将给大家详细介绍关于iOS获取系统iTunes音乐的相关内容,分享出来供大家参考...

    图片选择器

    - 考虑到不同设备(iPhone、iPad)和iOS版本的差异,图片选择器需要进行相应的适配,确保在各种环境下都能正常工作。 综上所述,"图片选择器"在iOS开发中涉及到的知识点包括系统API的使用、权限管理、UI设计、性能...

    斯坦福大学开放课程:iOS开发教程2010年秋(Lecture 17)

    在这一章节中,讲师详细讲解了与媒体相关的几个关键知识点,包括UIImagePickerController的使用、MPMoviePlayerController的视频播放功能、ALAssetsLibrary的图像和视频存储方式,以及声音处理技术。 ### ...

    支持64位扫描二维码和条码

    `ZBarSDK`支持多种类型的条码格式,包括QR Code、Code 128、EAN等,对于64位架构的iOS设备,ZBarSDK也提供了兼容性,确保在iPhone 5s及更高版本、iPad Air及以上设备上的正常运行。 要使用`ZBarSDK`,首先需要将其...

    ZBar 支持 armv6 armv7 armv7s arm64

    这意味着无论用户使用的是旧款iPhone还是新款iPad,应用都能流畅运行,提高了应用的兼容性和用户体验。特别是在XCode 6.1环境下编译的项目,确保了与当时主流设备的兼容性。 四、真机测试与优化 为了确保应用在...

    CZPhotoPickerController:提供“使用上次拍摄的照片”,“拍摄照片”和“从图书馆中选择”的照片选择器

    它支持iPhone和iPad。安装pod 'CZPhotoPickerController'用法: __weak typeof(self) weakSelf = self;self.photoPicker = [[CZPhotoPickerController alloc] initWithCompletionBlock:^(UIImagePickerController *...

    ios开发照相机的使用

    本文将深入探讨如何在iPhone上使用照相机功能,包括基础的相机使用、图片处理以及一些高级特性。 首先,我们要引入`AVFoundation`框架,它是iOS中处理多媒体数据的核心框架,包含了对相机操作的支持。在Xcode项目中...

    照相机和相册之间进行切换功能

    7. **适配不同屏幕尺寸**:考虑到iOS设备的多样性,`PKImagePickerDemo`应该能适应iPhone和iPad的不同屏幕尺寸,以及横竖屏切换。 8. **国际化**:如果`PKImagePickerDemo`设计得足够全面,那么它可能还支持多种...

    (BeginningiOS.5.Development.Exploring.the.iOS.SDK

    - **定义与特性**:iOS 5 是苹果公司在2011年发布的一款操作系统,它是为iPhone、iPod touch 和 iPad 设计的操作系统。 - **重要更新**:包括对Siri语音助手的支持、全新的通知中心、iMessage即时消息服务等功能。...

Global site tag (gtag.js) - Google Analytics