2012-07-06 92 views
1

在我的代码中,当UI方向更改为横向时,我正在增加contentSizecontentSize的高度,以便所有视图都适合此处,并且用户可以滚动以查看它。UIScrollView高度与UIView高度

在我的XIB我有

 
/UIView - view 
    |- UIScrollView - scrollView 
     |- other subviews that should be scrollable 

滚动视图的大小与观点相同,其自动调整大小面具被设置在各个方向来调整。

我注意到scrollView的高度尺寸远大于视图的高度。

E.g.我有一些调试日志:

 
NSLog(@"%@ - self.view.frame=%@, self.view.bounds=%@", NSStringFromSelector(_cmd), NSStringFromCGRect(self.view.frame), NSStringFromCGRect(self.view.bounds)); 
NSLog(@"self.scrollView.frame=%@, self.scrollView.bounds=%@", NSStringFromCGRect(self.scrollView.frame), NSStringFromCGRect(self.scrollView.bounds)); 

和它打印

 
willAnimateRotationToInterfaceOrientation:duration: - self.view.frame={{0, 0}, {480, 219}}, self.view.bounds={{0, 0}, {480, 219}} 
self.scrollView.frame={{0, 0}, {480, 399}}, self.scrollView.bounds={{0, 0}, {480, 399}} 

即使在Xcode IB它看起来像:

​​

为什么不UIScrollView具有相同大小视图?

感谢


更新

奇怪的是,当我设置了滚动到460(iPhone纵向)的高度时,Xcode/IB表明了滚动比其父更小视图(其中也设置相同的尺寸): enter image description here

但是现在我创建了一个测试项目,只有1个XIB,只有1个UIView,在那里增加1 UIScrollView,它看起来很正常,UIScrollView的高度与UIView相匹配。

因此,也许我已经搞砸了XIB和Xcode不能很好地处理它。

无论如何,我以编程方式设置尺寸(以处理旋转,UI组成变化等),它按预期工作。因为这是我的第一个iOS项目,我只是想知道UIScrollView是否有什么魔法。显然不是:-)

感谢您的所有意见。

+1

你为什么不把scrollview的高度改为460? – JeanLuc 2012-07-06 08:23:42

回答

-1

我创建了一个带有1个XIB的测试项目,它只有1个UIView,并在那里添加了1个UIScrollView,它看起来很正常,UIScrollView的高度与UIView的高度相匹配。

因此,也许我已经搞砸了XIB和Xcode不能很好地处理它。

感谢您给我的评论。

1

首先,将UIScrollView边界设置为与其超级视图相同的100%。接下来确保它的超级视图的autoresizesSubviews属性设置为YES。然后一切都会正常工作。此外,“willAnimate ...”表示旋转操作尚未完成,您应该在“didRotate”回调中检查新帧。

+0

感谢您的评论,尤金。奇怪的是,当我将scrollView的高度设置为父UIView的100%(在这种情况下是460px)时,Xcode显示的scrollView只是更小(请参阅我添加到我的问题的图像)。我已经更新了我的问题并准备关闭它:在另一个测试项目中,它看起来没问题。可能有些Xcode不稳定。 – 2012-07-07 14:05:59