繁体   English   中英

UIScrollView内容大小固定为600x600(Main.storyboard大小)

[英]UIScrollView content size fixed to 600x600(Main.storyboard size)

在过去的两周中,我一直在面对这个问题,但尚未找到解决方案。

我在存在问题的应用程序中使用UIScrollview。 通常,在我的应用中,来自Web服务的动态文本和大小不同的图像将来自Web服务。 例如,想象一下Facebook Newsfeed。 我的应用程序类似于Facebook新闻源。 有时只有文字,有时会有文字和图像。 并为该帖子发表评论。

正如我在许多链接中看到的那样,我要遵循的继承人是SuperView-> UIScrollView-> Content View ,并将元素放置在该内容视图中。 我将约束从contentview中的元素分配给Superview( ContentView --- Constraints-SuperView )。 当视图中的内容超过超级视图的大小时,它必须滚动。 但是当我们设计W any x H any size时,scrollview内容的大小被限制为600x600,即在main.storyboard中。 我看过许多教程并搜索了许多站点。 但是跟随他们给我没有运气。

任何帮助都是可观的。

这是从头开始在与Auto Layout一起使用的Interface Builder中设置scrollView的方法。

  1. 从一个新的ViewController开始。 拖出一个scrollView,使其充满视图。 取消选中“ 限制到边距” ,并将此scrollView的左,上,右和下边缘限制到其父视图的左,上,右和下,偏移量为0。这允许scollView填充任何设备上任何设备上的屏幕取向。 如果愿意,可以使scrollView占用更少的屏幕,只需确保完全禁用它即可。

  2. 将视图添加到您的scrollView。 这应该是您的scrollView上唯一的顶层视图,它将用作您的contentView。

  3. 将此contentView的左,上,右和下边缘限制在scrollView的左,上,右和下边缘,偏移量为0。这时,您将看到有关内容大小不明确的警告。 那是因为您尚未告诉您内容视图的大小。

  4. 要调整contentView的大小,请在contentView中添加宽度和高度限制。 如果要滚动,则宽度和高度必须大于scrollView本身的宽度和高度。 如果只想垂直滚动,则将contentView的宽度设置为等于scrollView的宽度。 为此,请在“ 文档大纲”视图中, 控制 -从contentView到拖动View的拖动,然后从弹出窗口中选择“ 相等宽度 ”。

  5. 如果您希望能够将您的内容查看的高度,改变从代码(考虑动态内容),首先要建立您的内容查看通过控制内容查看内-dragging并从弹出选择高度的高度限制。 通过控制 -从高度约束(在“ 文档大纲”视图中找到)拖动到ViewController的代码,以创建IBOutlet来达到高度约束。 给插座一个类似scrollViewHeight的名称,然后在需要更改scrollView的高度时,将其高度设置为scrollViewHeight.constant = 2000

只需将您的UIScrollView添加到情节提要中的UIViewController的视图中,然后在界面构建器中添加适当的约束即可。

然后,在代码中构建内容视图,并为其提供所需的任何框架,现在开始将控件添加到该内容视图中,并计算每个控件的大小(尤其是高度),最后得到您的总高度控件。

现在设置内容视图的框架以匹配该高度,并将其作为子视图添加到滚动视图,然后在代码中设置内容大小,如下所示:

_scrollView.contentSize = contentView.frame.size;

另请注意,此操作会更改viewDidLayoutSubviews中的大小,以避免屏幕大小不同的任何问题,但请注意,此事件被多次调用,因此必须有BOOL或其他东西来确保创建视图并将其添加到视图中的代码。滚动视图执行一次,例如这样

- (void)viewDidLayoutSubviews {
     [super viewDidLayoutSubviews];
     if (! built) {
         // Do everything I explained above here

        built = YES;
        [self.view layoutSubviews];
     }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM