UIImageView不遵循设备方向

时间:2012-09-26 18:07:23

标签: ios uiimageview uiinterfaceorientation

我有一个带有几个子视图的scrollView。子视图的定义如下:

CGRect screenRect = [[UIScreen mainScreen] bounds];
CGRect rect = imageView.frame;
rect.size.height = screenRect.size.height;
rect.size.width = screenRect.size.width;
imageView.frame = screenRect;
[scrollView addSubview:imageView];

这一点很好,直到我将界面方向更改为横向。 imageView仍处于纵向模式,将图像切成两半。如何更改纵向高度和宽度,以及横向高度和宽度?

3 个答案:

答案 0 :(得分:1)

在代码中添加此行并检查:

[imageView setAutoresizesSubviews:YES];
[imageView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];

[imageView setAutoresizesSubviews:YES];
[imageView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];

同时检查link

答案 1 :(得分:1)

有几点想法:

  1. 我使用[[UIScreen mainScreen] bounds]而不是self.view.bounds。这(a)将分解状态栏,导航栏等内容; (b)轮换时,宽度和高度会自动更新以反映新尺寸。

  2. 如果您希望为自己调整imageview的大小,通常会将autoresizingMask设置为UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleWidth

  3. 您可能需要查看您的imageview contentMode并将其设置为UIViewContentModeScaleAspectFit,以便始终显示整个图像。这样,如果你有一个肖像图像,它将始终以纵向显示而不会被扭曲。

  4. 如果您不喜欢在旋转设备时图像视图本身已调整为横向的事实,则可以在iOS5中的viewWillLayoutSubviews中重置其框架(在iOS4中,使用willAnimateRotationToInterfaceOrientation)。

答案 2 :(得分:0)

您需要侦听UIDeviceOrientationDidChangeNotification

在这里阅读更多相关内容: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html

检测到更改后,再次调用相同的代码。