当内容大小为动态时,如何设置scrollview
的内容大小。我已将所有内容添加到名为“contentView”的UIView
,然后尝试调用setcontentsize
,如下所示,但这不会导致滚动。
sudo'ish代码:
[scrollView setContentSize: contentView.frame.size];
也许“contentView”没有扩大尺寸以适合其孩子?
任何帮助都将不胜感激。
答案 0 :(得分:4)
UIView
或UIScrollView
不会根据内容自动延长。您必须手动计算帧并在scrollview中相应地对其进行定位,然后将scrollview的contentSize
设置为可以容纳其所有子视图的最大可能大小。
答案 1 :(得分:1)
当您向contentView调用[contentView sizeToFit]
添加内容然后内容视图将展开以适合其子视图时,您发布的代码将起作用。
答案 2 :(得分:1)
这取决于您要动态添加的内容类型。因此,假设您要显示大文本数据,然后使用UITextView
,因为它是UIScrollView
的子类,您可以在分配文本内容时获取TextView的setContentSize。在此基础上,您可以设置UIScrollView
的总大小。
float yPoint = 0.0f;
UIScrollView *myScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0f, yPoint, 320.0f, 400.0f)];
UITextView *calculatorTextView = [[UITextView alloc] init];
calculatorTextView.text = @"My looong content text ..... this has a dynamic content";
[calculatorTextView sizeToFit];
yPoint = yPoint + calculatorTextView.contentSize.height; // Bingo, we have the new yPoiny now to start the next component.
//现在您知道文本的高度以及文本的结束位置。因此,您可以创建Label或其他TextView并在那里显示您的文本。您可以将这些组件作为子视图添加到滚动视图中。
UITextView *myDisplayContent = [[UITextView alloc] initWithFrame:CGRectMake(0.0f, yPoint, 300.f, calculatorTextView.contentSize.height)];
myDisplayContent.text = @"My lengthy text ....";
[myScrollView addSubview:myDisplayContent];
//最后,将'myScrollView'的内容大小设置为显示区域的总长度。
[myScrollView setContentSize:yPoint + heightOfLastComponent];
这适合我。