我有这个ViewController:
主视图
_-滚动
__-内容视图
我需要动态调整内容视图的大小
我有这个方法resizeScrollView(),这是我的方法:
private func resizeScrollView(){
self.mViewContainer.frame.size.height = 800
self.mScrollView.contentSize = self.mViewContainer.frame.size
NSLog("Scroll Height : " + NSNumber(float: Float(self.mScrollView.contentSize.height)).stringValue)
NSLog("Container Height : " + NSNumber(float: Float(self.mViewContainer.frame.height)).stringValue)
}
我有这些日志:
2015-04-21 15:11:44.854 quotle[3673:60b] Scroll Height : 800
2015-04-21 15:11:44.856 quotle[3673:60b] Container Height : 800
在此步骤中,两个视图都已正确调整大小。
在我的滚动事件中,我已经链接了这个方法:
func scrollViewDidScroll(scrollView: UIScrollView) {
NSLog("Scroll Height : " + NSNumber(float: Float(self.mScrollView.contentSize.height)).stringValue)
NSLog("Container Height : " + NSNumber(float: Float(self.mViewContainer.frame.height)).stringValue)
}
当我滚动时,我会看到这些日志:
2015-04-21 15:11:43.556 quotle[3673:60b] Scroll Height : 800
2015-04-21 15:11:43.559 quotle[3673:60b] Container Height : 416
因此,当我开始滚动时,我的内容视图已调整大小......
我的问题是:当我滚动并且没有对内容视图进行自动调整时,我必须做些什么才能将内容视图的高度保持为800?
你可以用Obj-C回复,我会把它改编成swift。
答案 0 :(得分:1)
试试这个
- (void) fitForScroll:(UIView*) containerViewInScroll :(UIScrollView*)scrollView
{
float w=0;
float h=0;
for (UIView *v in [containerViewInScroll subviews]) {
float fw = v.frame.origin.x + v.frame.size.width;
float fh = v.frame.origin.y + v.frame.size.height;
w = MAX(fw, w);
h = MAX(fh, h);
}
[containerViewInScroll setFrame:CGRectMake(containerViewInScroll.frame.origin.x,containerViewInScroll.frame.origin.y, w, h + 20)];
[scrollView setContentSize:containerViewInScroll.frame.size];
}
----------