我有一个带有几个子视图的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仍处于纵向模式,将图像切成两半。如何更改纵向高度和宽度,以及横向高度和宽度?
答案 0 :(得分:1)
在代码中添加此行并检查:
[imageView setAutoresizesSubviews:YES];
[imageView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
[imageView setAutoresizesSubviews:YES];
[imageView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
同时检查link。
答案 1 :(得分:1)
有几点想法:
我使用[[UIScreen mainScreen] bounds]
而不是self.view.bounds
。这(a)将分解状态栏,导航栏等内容; (b)轮换时,宽度和高度会自动更新以反映新尺寸。
如果您希望为自己调整imageview的大小,通常会将autoresizingMask
设置为UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleWidth
。
您可能需要查看您的imageview contentMode
并将其设置为UIViewContentModeScaleAspectFit
,以便始终显示整个图像。这样,如果你有一个肖像图像,它将始终以纵向显示而不会被扭曲。
如果您不喜欢在旋转设备时图像视图本身已调整为横向的事实,则可以在iOS5中的viewWillLayoutSubviews
中重置其框架(在iOS4中,使用willAnimateRotationToInterfaceOrientation
)。
答案 2 :(得分:0)
您需要侦听UIDeviceOrientationDidChangeNotification
在这里阅读更多相关内容: http://developer.apple.com/library/ios/#documentation/uikit/reference/UIDevice_Class/Reference/UIDevice.html
检测到更改后,再次调用相同的代码。