我知道已经有类似的问题了,但他的解决方案并没有解决我的问题。
我所拥有的是,我已经使用故事板创建了一个视图控制器,然后将一个子堆栈视图放在上面。
使用IBOutlet,我已经将UIStackView链接到自定义视图控制器类。
所有的东西都正确地连接在一起,这不是问题所在(我已经确定了)。
我的问题是,我似乎无法在UIStackView中显示UITextView。
这是我的代码(在视图控制器的一个函数中):
let textView = UITextView()
textView.text = "test"
stackView.addArrangedSubview(textView) //stackView is the IBOutlet
我已经能够使用使UITextView显示在父视图上
let pos = CGRect(x: 100, y: 100, width: 200, height: 200)
let textView = UITextField(frame: pos)
textView.text = "test"
//stackView.addArrangedSubview(textView)
self.view.addSubview(textView)
不,用stackView取消注释行,然后注释掉self.view.addSubview 是行不通的
但是,如果我使用UITextField,我会设法在UITabView中显示一些内容。这太烦人了。。。。
有什么建议吗?
堆栈视图不知道文本视图的大小,因为默认情况下它是可滚动的。您需要禁用滚动:
textView.isScrollEnabled = false
您必须从文本视图向堆栈视图添加0左和右的约束。
禁用滚动对我不起作用,但使用高度约束设置定义的高度对我起作用。我没有使用子视图-在我的情况下,只需要直接在UITextView上设置高度约束。
您不应该将手动帧设置与自动布局(UIStackView
内部使用的)混合使用@Lawrence413的答案是错误的,并且错误地使用了UIStackView
。
以下是一篇描述UIStackView
及其使用方法的博客文章:http://www.raizlabs.com/dev/2016/04/uistackview/
注意UIStackViewDistribution
以及如何使用它来调整arrangedSubviews
的大小。
UITextView
需要一个框架。并使用addSubview
而不是addArrangedSubview
。
我使用了以下内容,文本视图在堆栈视图中显示得很好:
let textView = UITextView(frame: CGRectMake(0, 0, 100, 100))
textView.text = "test"
textView.backgroundColor = UIColor.redColor()
stackView.addSubview(textView)