【发布时间】:2013-01-13 22:25:24
【问题描述】:
我有一个以编程方式创建的 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));,主视图的边界已经切换,但如果我这样做:
-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
scrollView.bounds = mainView.bounds;
NSLog(@"%@", NSStringFromCGRect(scrollView.bounds));
NSLog(@"%@", NSStringFromCGRect(mainView.bounds));
}
它仍然显示错误..
NSLog 为两个视图记录了相同的边界,但是在屏幕上 mainView 是正确的,并且 scrollView 似乎翻转了,好像 (0,0) 的原点在 mainView 之外,并且大小翻转错误..
我是否必须重绘某些东西,还是我在错误的地方调用了所有这些?或者.bounds 不是正确的变量吗?
编辑
我意识到更新框架与使用 initWithFrame: 重新启动框架不同,但我希望当前内容以相同的方式保持不变..
【问题讨论】:
-
这是您的实际代码还是可能存在复制/粘贴错误?因为它应该是
NSLog(@"%@", ...),而不是NSLog("%@", ...)。 -
是的,我是手动输入的,所以与此无关,我会解决的,谢谢;)
标签: ios objective-c cocoa-touch uiview uikit