`
jsntghf
  • 浏览: 2542683 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

UIImagePickerController在iPhone和iPad上的区别

    博客分类:
  • iOS
阅读更多

在iPhone中获取照片库的常用方法如下:

 

UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];
if ([UIImagePickerController isSourceTypeAvailable:
		 UIImagePickerControllerSourceTypePhotoLibrary]) {
	imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
	imagePicker.delegate = self;
	[imagePicker setAllowsEditing:NO];
	[self presentModalViewController:imagePicker animated:YES];
	[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 *imagePicker = [[UIImagePickerController alloc] init];
if ([UIImagePickerController isSourceTypeAvailable:
		 UIImagePickerControllerSourceTypePhotoLibrary]) {
	imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
	imagePicker.delegate = self;
	[imagePicker setAllowsEditing:NO];
	UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:imagePicker];
	self.popoverController = popover;
	[popoverController presentPopoverFromRect:CGRectMake(0, 0, 300, 300) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
	[popover release];
	[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 Device APIs,Location, Accelerometer etc.】[PDF] [iPhone/iPad/iOS]

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

    iphone 相册、照相机的应用

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

    ios拍照Demo

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

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

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

    iOS相机摄像头的调用

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

    ios 画板 手势 涂鸦

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

    克隆的iOS 7的UIImagePickerController

    作者jpsim,源码JPSImagePickerController,一个像素完美的克隆的iOS 7的UIImagePickerController,有一些改进,我构建这是因为苹果的图像选择器很难修改。 适用于iPad和iPhone。

    IOS 选择图片和拍照

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

    ios源码之相框PhotoFrame.rar

    在PhotoFrame中,可能使用了Auto Layout来确保相框适应各种设备的屏幕尺寸,无论是在iPhone还是iPad上都能得到良好的显示效果。 5. **Storyboard与XIB文件** 故事板(Storyboard)和XIB文件是iOS界面设计的主要...

    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 *...

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

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

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

    本课程由斯坦福大学计算机科学系提供,主要聚焦于如何为iPhone 4、iPod Touch及iPad开发应用程序。在这一章节中,讲师详细讲解了与媒体相关的几个关键知识点,包括UIImagePickerController的使用、...

    deegeu-swift-camera-basic:如何在iOS中使用Swift使用相机拍照

    “如何使用Swift 2.0访问iOS摄像机”视频演示了如何使用Swift 2.0拍摄iPhone / iPad照片,并在UIImageView中显示图像。 该视频使用Swift 2.0和iOS 9 您可以上找到更多iOS视频入门该代码是一个独立的Swift项目,可以...

    Camera With AVFoundation(iPhone源代码)

    本Demo在iPad上LandScape模式工作。 开发者说:做这个小Demo的例子就是解决iPad上面使用UIImagePickerController定制视图会自动旋转的问题。 小编注:感谢开发者@可可不是糖 分享代码于本站。 Code4App编译测试,...

    ZBarSDK二维码

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

    GMImagePicker.Xamarin:原始GMImagePicker组件到Xamarin.iOS的端口

    GMImagePicker.Xamarin 图像和视频选择器,支持... 动态尺寸的网格视图,易于自定义,并与iPhone 6/6 +和iPad完全兼容。 可以横向移动并允许屏幕旋转! 它可以用作iPad上的Popover,尺寸可自定义。 由PHCachingImag

    ios5.0 开发基础教程 源码

    5. **UI布局**:使用Auto Layout和Size Classes进行界面布局,确保在不同尺寸的设备上(如iPhone和iPad)都能正确显示。Auto Layout定义了视图间的约束关系,而Size Classes处理屏幕方向和设备类型的适配。 6. **...

    GMImagePicker:支持多种选择和UI自定义的照片和视频选择器(类似于UI Image Picker)。 专为具有Photo框架(PhotoKit)的iOS 8设计

    默认情况下,在功能,外观和行为方面模仿UIImagePickerController。 动态尺寸的网格视图,易于自定义,并与iPhone 6/6 +和iPad完全兼容。 可以横向移动,并可以旋转屏幕! 它可以用作iPad上的Popover,尺寸可自定义...

    ZBar 支持i386 armv6 armv7 armv7s x86_64 arm64

    4. **armv7s**:这是一种优化的armv7架构,首次出现在iPhone 5和第五代iPad中。 5. **x86_64**:这是64位Intel处理器架构,用于Mac OS X系统。 6. **arm64**:这是64位ARM架构,自iPhone 5s开始,苹果在其移动设备上...

Global site tag (gtag.js) - Google Analytics