首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >默认情况下,UIScrollView ContentSize.height为0.0000?

默认情况下,UIScrollView ContentSize.height为0.0000?
EN

Stack Overflow用户
提问于 2013-05-01 23:29:08
回答 3查看 4.7K关注 0票数 2

我正在尝试使用UIScrollView创建一个动态表单,但我注意到,当我使用NSLog时,我的滚动视图的contentSize.height = 0.00000将scrollView构建为情节提要上屏幕的宽度和高度,其中包含元素。那么为什么它返回0呢?scrollView中的所有元素都可以正常显示/运行。scrollView的contentSize是否总是默认为0,我只需要设置它?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-02 00:20:03

Yes默认为0。您应该通过将所有视图的高度和它们之间的间距相加来设置滚动视图的内容大小,例如:

代码语言:javascript
运行
复制
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];

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

票数 2
EN

Stack Overflow用户

发布于 2013-05-02 00:41:49

是的,默认情况下,UIScrollView的内容大小为0。为了在你的scrollView中引入滚动功能,你需要设置某些属性,比如setScrollEnabled,设置反弹,设置水平/垂直滚动,以及UIScrollView最重要的contentSize。除非内容大小大于UIScrollView的大小,否则UIScrollView不会拥有滚动功能。

票数 2
EN

Stack Overflow用户

发布于 2016-06-12 15:15:27

尝试在ScrollView中放置一个UIView,不要对该UIView设置任何约束。接下来,将所有表单控件放在UIView中,并像往常一样约束它们。

现在,是将表单底部的最后一个控件约束设置为UIView (即表单底部),这将通过Autolayout进行转换,您不仅可以获得高度值,还可以垂直滚动表单。还有..。

  1. Do not set scrollView.contentSize
  2. Do not set translatesAutoresizingMaskIntoConstraints (保留为默认值)
  3. Do not set form高度(UIView) Do not set the form (TranslatesAutoresizingMaskIntoConstraints)
  4. Do not set the form(UIView) this is not set the form (UIView)

注意:如果您希望窗体(UIView)的宽度与设备的宽度相同...然后右键单击导航栏中的表单( UIView ) (即所有控件都在树样式中列出的位置),然后将其拖动到顶部的主要UIView元素中。然后在弹出窗口中选择相等宽度

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16321178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档