2

是否可以让 UIImageView 以不同于纵向图像的方式处理横向图像?

我会试着解释一下,我有ImageViewController一个UIImageView填满整个屏幕的。
在某些时候,用户启动 aUIImagePickerController并从相机胶卷中选择一张图片。
然后我用那张图片创建一个实例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 框架?

4

3 回答 3

3

只需设置:

imageView.contentMode = UIViewContentModeAspectFit;

它会保持比例适合屏幕,而不是填充它。

于 2012-07-19T12:43:20.337 回答
2

您可能希望根据图片的比例更改UIImageView'属性。contentMode

所以在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; 
   }
}

注意:注意测试,但可能有效

于 2012-07-22T16:29:13.303 回答
0
UIImageView *imgView;
imgView.contentMode = UIViewContentModeCenter;
于 2012-07-19T12:33:51.260 回答