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