全屏模式下的横向模式图像UIImageView

问题描述:

UIImageView是否可以让横向图像处理与纵向图像不同的横向图像?全屏模式下的横向模式图像UIImageView

我会尽力解释,我有ImageViewControllerUIImageView填充整个屏幕。
在某些情况下,用户启动UIImagePickerController并从相机胶卷中选择一张照片。
然后,我创建了ImageViewController的实例与图片,并将它推

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; 


    ImageViewController *ivc = [[ImageViewController alloc] initWithImage:image]; 
    [picker pushViewController:ivc animated:YES]; 
    [ivc release]; 
} 

的问题是,如果图像是在横向模式下,它仍然充满了整个屏幕。
我希望它看起来像iPhone照片应用程序呈现风景图像(在黑色背景屏幕的中心)。

在UIImageView中显示风景模式图像的方式是否有构建?还是需要根据图像方向设置imageView框?

UIImageView *imgView; 
imgView.contentMode = UIViewContentModeCenter; 
+0

我不希望它填满整个屏幕 – Eyal 2012-07-19 13:02:42

+0

它不会填满整个屏幕。它将适合你的屏幕放大而不缩放内容,以100%提供的UIImageView。 – Eugene 2012-07-19 13:16:34

刚刚成立的:

imageView.contentMode = UIViewContentModeAspectFit; 

并能持续的比重适应屏幕,不加油吧。

+0

这对于横向图像非常适用,但是当我设置纵向图像时,它不会填满整个屏幕,因此我会在左右边缘留出一小块空间,为什么? – Eyal 2012-07-19 13:04:14

+0

在viewDidLoad中抓取图像大小,看看高度是否大于宽度。如果是,它是纵向图像,您应该设置AspectFill contentMode,如果它不是横向或正方形,则应使用AspectFit或Center contentModes。 – Eugene 2012-07-19 13:20:09

+0

这是因为景观中的图像的比例与UIImageView的比率不同。你可以执行一些计算来检查图像大小的比例,并根据它,定义contentMode到UIViewContentModeAspectFit或UIViewContentModeAspectFill – 2012-07-19 13:20:20

您可能想要根据图片的比例更改UIImageViewcontentMode属性。

所以在viewDidLoad

if (imageView.image.size.height > imageView.image.size.width) { 
    imageView.contentMode = UIViewContentModeAspectFill; 
} else { 
    imageView.contentMode = UIViewContentModeAspectFit; 
} 

,并更改模式,当用户切换为横向,所以例如在willAnimateRotationToInterfaceOrientation:duration:

if (UIInterfaceOrientationIsLandscape(toIntefaceOrientation)){ 
    if (imageView.image.size.height > imageView.image.size.width) { 
     imageView.contentMode = UIViewContentModeAspectFit; 
    } else { 
     imageView.contentMode = UIViewContentModeAspectFill; 
    } 
} else { 
    if (imageView.image.size.height > imageView.image.size.width) { 
     imageView.contentMode = UIViewContentModeAspectFill; 
    } else { 
     imageView.contentMode = UIViewContentModeAspectFit; 
    } 
} 

注意:注意测试,但可能工作