Xcode - Swift,UITextView不会在UIStackView上显示

时间:2016-04-27 18:00:57

标签: ios swift uitextview uistackview

我知道已经有类似的问题,但他的解决方案并没有解决我的问题。

我所拥有的是,我已经使用故事板创建了一个视图控制器,然后在其上放置了一个子堆栈视图。

使用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中出现一些东西。这太烦人了......

有什么建议吗?

5 个答案:

答案 0 :(得分:47)

堆栈视图不知道文本视图的大小,因为默认情况下它是可滚动的。您需要禁用滚动:

textView.isScrollEnabled = false

答案 1 :(得分:1)

您不应该将手动框架设置与AutoLayout混合(UIStackView内部使用的内容)。 @ Lawrence413的回答是错误的,并且错误地使用了UIStackView

以下是描述UIStackView以及如何使用它的博文: http://www.raizlabs.com/dev/2016/04/uistackview/

记下UIStackViewDistribution及其用于调整arrangedSubviews的大小。

答案 2 :(得分:1)

禁用滚动对我来说不起作用,但使用高度约束设置定义的高度对我有用。我没有使用子视图 - 直接在UITextView上的高度约束就是我的需要。

答案 3 :(得分:0)

您需要UITextView的框架。并使用addSubview代替addArrangedSubview

我使用了以下内容,文本视图在堆栈视图中显得很好:

let textView = UITextView(frame: CGRectMake(0, 0, 100, 100))
textView.text = "test"
textView.backgroundColor = UIColor.redColor()
stackView.addSubview(textView)

答案 4 :(得分:0)

您必须在文本视图和堆栈视图中添加0的约束