Xcode 在没有内容视图的情况下直接嵌入滚动视图
Xcode embed all direct in scrollview without content view
我正在使用 Xcode 6.4,我正在努力处理一个包含各种标签和文本字段等的大页面,这些页面必须是可滚动的。我查看了各种教程,其中一些显然已经过时,并且我首先将所有元素放在滚动视图内的视图中。但是使用自动布局让所有元素正确对齐是一个很大的痛苦,除了不让它滚动之外。
现在我看到有人建议直接在元素上使用以下内容,根本没有内容视图,只有滚动视图:
Editor -> Embed In -> Scroll View
我喜欢它,因为它似乎没有什么不成比例的,所有元素都显示在 iPhone 上,就像我在 Storyboard 上显示的一样,无需设置任何限制,但我不是能够让它滚动。
这是我的class
class ResNotFoundViewController: UIViewController, UIScrollViewDelegate
我也尝试在代码中设置滚动视图的高度:
@IBOutlet weak var scrollviewoutlet: UIScrollView!
然后在 viewDidLoad 中这样:
scrollviewoutlet.contentSize = CGSizeMake(375, 840)
。
但我根本无法让它滚动,它将保持与打开时完全相同的状态,From: Label 是最后一个可见元素。
我做错了什么?
由于您的记录,您已找到问题所在。 (不要担心两次调用 - viewDidLayoutSubviews
被调用的次数和时间是无趣的。)
问题是您将滚动视图 本身 设置为高于 window。特别是,它是 375x809。但它的 contentSize
也是如此。因此没有什么可滚动的。滚动视图只有在 contentSize
比滚动视图 大 (一维或二维)时才能滚动。 (此外,比屏幕大的滚动视图通常有些毫无意义,因为它的某些内容用户永远不会看到 - 即使一直滚动,这些内容也会在屏幕外。)
因此,修复滚动视图本身的大小就可以了。最好的方法是为其分配约束,将其边界固定到其父视图,因为父视图在不同设备上将具有不同的大小。
我正在使用 Xcode 6.4,我正在努力处理一个包含各种标签和文本字段等的大页面,这些页面必须是可滚动的。我查看了各种教程,其中一些显然已经过时,并且我首先将所有元素放在滚动视图内的视图中。但是使用自动布局让所有元素正确对齐是一个很大的痛苦,除了不让它滚动之外。
现在我看到有人建议直接在元素上使用以下内容,根本没有内容视图,只有滚动视图:
Editor -> Embed In -> Scroll View
我喜欢它,因为它似乎没有什么不成比例的,所有元素都显示在 iPhone 上,就像我在 Storyboard 上显示的一样,无需设置任何限制,但我不是能够让它滚动。
这是我的class
class ResNotFoundViewController: UIViewController, UIScrollViewDelegate
我也尝试在代码中设置滚动视图的高度:
@IBOutlet weak var scrollviewoutlet: UIScrollView!
然后在 viewDidLoad 中这样:
scrollviewoutlet.contentSize = CGSizeMake(375, 840)
但我根本无法让它滚动,它将保持与打开时完全相同的状态,From: Label 是最后一个可见元素。
我做错了什么?
由于您的记录,您已找到问题所在。 (不要担心两次调用 - viewDidLayoutSubviews
被调用的次数和时间是无趣的。)
问题是您将滚动视图 本身 设置为高于 window。特别是,它是 375x809。但它的 contentSize
也是如此。因此没有什么可滚动的。滚动视图只有在 contentSize
比滚动视图 大 (一维或二维)时才能滚动。 (此外,比屏幕大的滚动视图通常有些毫无意义,因为它的某些内容用户永远不会看到 - 即使一直滚动,这些内容也会在屏幕外。)
因此,修复滚动视图本身的大小就可以了。最好的方法是为其分配约束,将其边界固定到其父视图,因为父视图在不同设备上将具有不同的大小。