如何在设备旋转时为视图设置正确的边界?

时间:2013-01-13 22:25:25

标签: ios objective-c cocoa-touch uiview uikit

我有一个以编程方式创建的UIScrollView,我将它创建为它背后的UIView的大小。在viewDidAppear我基本上有:

UIScrollView *scrollView= [[UIScrollView alloc] initWithFrame:mainView.bounds];
//mainView being the UIView behind

当设备旋转时,背景中的UIView自然会将边界更改为更宽和更短(尽管x,y≠y,x)。

在我的-(void)didRotateFromInterfaceOrientation:中我放了`NSLog(@“%@”,NSStringFromCGRect(mainView.bounds));,并且mainView的界限已经切换,但如果我这样做:

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    scrollView.bounds = mainView.bounds;
    NSLog(@"%@", NSStringFromCGRect(scrollView.bounds));
    NSLog(@"%@", NSStringFromCGRect(mainView.bounds));
}

它仍然显示错误.. NSLog注销两个视图的相同边界,但是在屏幕上mainView是正确的,并且scrollView似乎翻转或者其他东西,好像原点(0,0)在mainView之外,并且大小被翻转错误。 我是否需要重新绘制某些内容,或者我是否在错误的地方调用了所有内容?或者.bounds不是正确的变量?

修改

我意识到更新框架与使用initWithFrame:重新启动框架不同,但我希望当前内容保持不变,以同样的方式...

1 个答案:

答案 0 :(得分:1)

您需要设置scrollview的框架而不是它的边界

scrollView.frame = mainView.bounds;

或者更好的是,如果您设置了正确的自动调整遮罩/约束,它将自动调整大小。