[英]UIViews with a frame of 600x600 pt on iphone 6 plus with size classes
[英]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的方法。
从一个新的ViewController开始。 拖出一个scrollView,使其充满视图。 取消选中“ 限制到边距” ,并将此scrollView的左,上,右和下边缘限制到其父视图的左,上,右和下,偏移量为0。这允许scollView填充任何设备上任何设备上的屏幕取向。 如果愿意,可以使scrollView占用更少的屏幕,只需确保完全禁用它即可。
将视图添加到您的scrollView。 这应该是您的scrollView上唯一的顶层视图,它将用作您的contentView。
将此contentView的左,上,右和下边缘限制在scrollView的左,上,右和下边缘,偏移量为0。这时,您将看到有关内容大小不明确的警告。 那是因为您尚未告诉您内容视图的大小。
要调整contentView的大小,请在contentView中添加宽度和高度限制。 如果要滚动,则宽度和高度必须大于scrollView本身的宽度和高度。 如果只想垂直滚动,则将contentView的宽度设置为等于scrollView的宽度。 为此,请在“ 文档大纲”视图中, 控制 -从contentView到拖动View的拖动,然后从弹出窗口中选择“ 相等宽度 ”。
如果您希望能够将您的内容查看的高度,改变从代码(考虑动态内容),首先要建立您的内容查看通过控制内容查看内-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.