【发布时间】:2017-11-01 05:27:27
【问题描述】:
我想在一个 Swift 项目中创建一个简单的视图层次结构,它有一个 UIScrollView,它应该充当子视图的可扩展容器:UILabel、UITextView 和一个按钮。
这里的问题是我使用可视化格式语言以编程方式完成这一切,而不能在 Interface Builder 中完成。我下面的代码显示了一个滚动视图,但是它无法向下滚动以显示其下方的视图,并且视图本身的大小不正确。它是静态的。子视图也不会扩展以填满屏幕。
我想显示一个全屏大小的滚动视图,并且它的子视图水平填充屏幕,高度取决于我设置的大小。它们目前只有大约 200pt 宽,这很不寻常。
viewDidLoad() {
view.addSubview(scrollView)
//This function is a convenience function which applies constraints
view.addConstraints(withFormat: "H:|[v0]|", toViews: scrollView)
view.addConstraints(withFormat: "V:|[v0]|", toViews: scrollView)
//Here I add the 3 subviews mentioned above
scrollView.addSubview(nativeText)
scrollView.addSubview(mnemonicDescription)
scrollView.addSubview(addButton)
//Here I apply constraints using format language
scrollView.addConstraints(withFormat: "H:|[v0]|", toViews: foreignText)
// Note that this should make foreignText expand the full width. It doesn't, its very small
//I continue to add subviews with horizontal and vertical constraints however they do not fill the container view as expected.
}
【问题讨论】:
-
尝试指定滚动视图的内容大小
-
嘿,Darsha,如果你的意思是添加类似 scrollView.contentSize = CGSize(width: view.frame.width, height: view.frame.height) 那么它实际上不起作用。它只是使滚动视图成为屏幕的大小,但我无法滚动超过滚动视图的大小,以查看显示内容下方的其他视图。它仍然是静态的。谢谢
-
给定静态高度是否有效?
-
通过设置上面的内容大小,我相信它具有静态的高度和宽度?这确实使滚动视图成为视图的全尺寸,但是滚动视图不会滚动并且子视图的宽度错误(不跨越全屏)
-
最好使用自动布局和约束,而不是框架和 contentSize。我在这里有一个示例,使用了几种不同的约束方法,包括 VFL:github.com/DonMag/SWAutoLayoutScrollView
标签: ios iphone swift cocoa-touch uiscrollview