【问题标题】:Scrollview setcontentsize for dynamic content动态内容的滚动视图 setcontentsize
【发布时间】:2011-07-17 14:13:47
【问题描述】:

当内容大小是动态的时,我将如何设置 scrollview 的内容大小。我已将所有内容添加到名为“contentView”的UIView,然后尝试调用setcontentsize,如下所示,但这会导致无法滚动。

sudo'ish 代码:

[scrollView setContentSize: contentView.frame.size];

也许“contentView”没有拉伸它的大小以适应它的孩子?

任何帮助将不胜感激。

【问题讨论】:

    标签: iphone objective-c uiscrollview


    【解决方案1】:

    UIViewUIScrollView 不会根据内容自动拉伸。您必须手动计算框架并在滚动视图内相应地定位它,然后将滚动视图的contentSize 设置为可以容纳其所有子视图的最大可能大小。

    【讨论】:

      【解决方案2】:

      这取决于您要动态添加的内容类型。所以假设你有一个大的文本数据要显示,然后使用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];
      

      这对我有用。

      【讨论】:

        【解决方案3】:

        当您向 contentView 调用 [contentView sizeToFit] 添加内容时,内容视图将拉伸以适应其子视图,然后,您发布的代码将起作用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-06-09
          • 2016-12-24
          • 1970-01-01
          • 1970-01-01
          • 2020-03-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多