我知道已经有类似的问题,但他的解决方案并没有解决我的问题。
我所拥有的是,我已经使用故事板创建了一个视图控制器,然后在其上放置了一个子堆栈视图。
使用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中出现一些东西。这太烦人了......
有什么建议吗?
答案 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的约束左和右。