关于ImagePickerController竖屏显示不正确问题

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-02 00:59 点击:

用过ImagePickerController,应该比较熟悉这段代码:

UIImagePickerController* imagePicker = [[UIImagePickerController alloc] init];

imagePicker.delegate = self;

 

imagePicker.sourceType = sourceType;

 

if (popover) {

 [popover release];

}

popover=[[UIPopoverController alloc]initWithContentViewController:imagePicker];

imagePicker.wantsFullScreenLayout = YES;

[popover presentPopoverFromRect: CGRectMake(vwPopover.frame.origin.x, vwPopover.frame.origin.y, vwPopover.size.width, 0)

inView:self.view

              permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

[imagePickerrelease];

说句公道点的话,SDK提供ImagePickerController确实存在着数不尽数的bug,远远称不上好用。不能设置它的frame,不能全屏,不能定制它的界面,不能连续拍照(每次只能拍一张照片),等等。

然而最近笔者又碰到了它的一个新的Bug。我有一个iPad应用,只支持人像模式(竖向),当程序使用PopOverController呈现ImagePickerController拍照界面时,相机镜头却被反时针旋转了90度。

但当我关闭屏幕(确定需要关屏),将屏幕旋转至横屏,再次弹出ImagePickerController,相机镜头却显示正常

在网上没有搜到类似的bug报告。看来只是个例,不幸偏偏被笔者遇到了。

查看苹果文档,文档说ImagePickerController只支持竖屏不支持横屏。

问题是我的应用明明只支持竖屏啊?从2张图片看,ImagePickerController明显将设备方向给判断错了,它将竖屏状态识别为横屏,而将横屏状态识别成了竖屏,这让我抓破脑袋也没想出是什么道理。

解决的办法只有在每次弹出ImagePickerController之前,检查设备方向,当设备被识别为横屏的时候(此时真正的方向却应该是竖屏。唉,将错就错吧),将ImagePickerController的方向顺时针旋转90度:
 

if (sourceType==UIImagePickerControllerSourceTypeCamera

           && (UIDeviceOrientationIsLandscape([[UIDevice currentDevice]orientation]))) {

          

           imagePicker.cameraViewTransform = CGAffineTransformMakeRotation(M_PI/2);

 

        }

 [popover presentPopoverFromRect: CGRectMake(vwPopover.frame.origin.x, vwPopover.frame.origin.y, vwPopover.size.width, 0)

        inView:self.view

              permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

 

这下终于解决。


摘自 kmyhy的专栏

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • Lexical or Preprocessor Issue 'xxx.h
      • ios学习笔记(二)xcode 4.3.2下实现基本交互
      • ios版本的helloworld
      • iphone(object-c) 内存管理(3) 有效的内存管理 前半部分
      • ios学习笔记(一)xcode 4.3.2下创建第一个ios项目
      • UITableView一些方法
      • IOS类似iphone通讯录TableView的完整demo【附源码】
      • [iPhone中级]iPhone团购信息客户端的开发 (二)
      • iphone(object-c)内存管理(1)
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1