1

我有一个以编程方式创建的 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) 在主视图之外,并且尺寸错了..我是否必须重绘一些东西,还是我把所有这些都放在错误的地方?或者不是.bounds使用正确的变量?

编辑

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

4

1 回答 1

1

您需要设置滚动视图的框架而不是边界

scrollView.frame = mainView.bounds;

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

于 2013-01-13T22:36:02.617 回答