0

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

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 仍处于纵向模式,将图像切成两半。我应该怎么做才能将纵向高度和宽度更改为横向高度和宽度?

4

3 回答 3

1

在您的代码中添加这一行并检查:

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

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

也检查这个链接

于 2012-09-26T18:21:52.420 回答
1

几个想法:

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

  2. 如果您希望为您调整图像视图的大小,通常将其设置autoresizingMaskUIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleWidth.

  3. 您可能想要检查您的图像视图contentMode并将其设置为类似这样的东西,UIViewContentModeScaleAspectFit以便始终显示您的整个图像。这样,如果您有肖像图像,它将始终以纵向显示而不会失真,不会被截断。

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

于 2012-09-26T19:08:57.940 回答
0

您需要监听 UIDeviceOrientationDidChangeNotification

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

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

于 2012-09-26T18:12:14.333 回答