我有一个以编程方式创建的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:
重新启动框架不同,但我希望当前内容保持不变,以同样的方式...
答案 0 :(得分:1)
您需要设置scrollview的框架而不是它的边界
scrollView.frame = mainView.bounds;
或者更好的是,如果您设置了正确的自动调整遮罩/约束,它将自动调整大小。