UIScrollView ContentSize.height默认为0.0000?

我想创build一个dynamic的forms使用UIScrollView,但我注意到,当我使用NSLog ,我的scrollView的contentSize.height = 0.00000我build立了scrollView的宽度和高度的故事板上的内容与它的元素。 那为什么它返回0呢? scrollView中的所有元素都正常显示/正常工作。 scrollView的contentSize总是默认为0,我只需要设置它?

默认是0。 您应该通过总结所有视图高度和它们之间的空间来设置滚动视图的内容大小,例如:

 UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 60)]; scrollView.backgroundColor = [UIColor blueColor]; [self.view addSubview:scrollView]; NSUInteger spaceBetweenLabels = 10; UILabel *firstLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 300, 40)]; firstLabel.text = @"first label text"; UILabel *secondLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, spaceBetweenLabels + firstLabel.frame.size.height, 300, 40)]; secondLabel.text = @"second label text"; [scrollView addSubview:firstLabel]; [scrollView addSubview:secondLabel]; CGSize fullContentSize = CGSizeMake(300, firstLabel.frame.size.height + secondLabel.frame.size.height + spaceBetweenLabels); [scrollView setContentSize:fullContentSize]; 

当然,如果您的滚动视图高度高于内容大小高度,它将不会滚动,因为所有内容都在屏幕上。

是的默认情况下,UIScrollView的内容大小为零。 为了将滚动引入到您的scrollView中,您需要设置像setScrollEnabled,设置Bouncing,设置水平/垂直滚动和UIScrollView最重要的contentSize的某些属性。 除非内容大小大于UIScrollView的大小,否则UIScrollView将不具有滚动。

尝试在ScrollView中放置一个UIView,不要在UIView上设置任何约束。 接下来将所有你的表单控件放置在UIView中,并像正常一样限制它们。

现在关键将窗体的底部约束最后一个控件设置到UIView (即窗体的底部 )。然后,这将通过Autolayout进行转换,不仅可以获得高度值,而且还可以垂直滚动窗体。 也…

  1. 不要设置scrollView.contentSize
  2. 不要设置translatesAutoresizingMaskIntoConstraints(保留默认)
  3. 不要使用约束来设置窗体的高度(UIView),这是Autolayout所做的
  4. 不要在窗体上设置任何约束(UIView)

注意:如果你希望你的表单(UIView)的宽度与你的设备相同…那么右键单击导航栏中的表单(UIView)(即所有控件都以树forms列出)和然后将其拖到主要的顶部UIView元素。 然后在popup窗口中select相同的宽度