禁用滚动后,在StackView内部的UITextView高度为0

时间:2018-02-21 05:20:25

标签: ios swift uitextview

我有三个子VC被添加到父VC。在我的一个孩子VC中,我有一个从笔尖加载的视图。在那个笔尖中,我设置了一个没有约束的UITextView并禁用了滚动,以便根据文本动态调整大小。这一切都可以正常工作,我可以输入或删除UITextView中的文本,并相应调整大小。

但是,如果我切换标签(子VC)并返回到我UITextView的标签,我的UITextView现在高度为0(无法看到)。我不确定是什么导致这种情况发生,一切正常,直到我切换视图并返回。

我的第一个想法是在返回我的孩子VC时重新配置UITextView viewDidAppear(),但我的UITextView插座和设置方法位于单独的UIView子类中所以我不能打电话给viewDidAppear()。我甚至不确定这是否会成为一种解决办法,正如我猜的那样。

MyParent.swift: UIViewController
   MyChild1.swift: UIViewController
   MyChild2.swift: UIViewController
   MyChild3.swift: UIViewController
      MyView.swift: UIView - Custom View loaded from Nib
      (this is where my UITextView outlet is and setup for it)

例如,在MyChild3中,我创建了自定义视图:

let view = Bundle.main.loadNibNamed("MyView", owner: self, options: nil)?.first! as! MyView
view.myModel = model
view.configure()

然后,在笔尖使用的自定义类MyView.swift中,我有UITextView插座和设置方法:

@IBOutlet weak var textView: UITextView!

public func configure() {
    configureTextView()
}

private func configureTextView() {
    textView.delegate = self
    textView.text = myModel.text
    textView.isScrollEnabled = false
}

编辑:

我应该提一下,我的UITextView是水平StackView的一部分以及UIImageView,如下所示:

UIImageView
UITextView

当我返回我的VC时,UIImageView在StackView中占据了100%的高度,但在离开我的VC之前,UITextView高度的大小与其文本一致。在执行Show View Hierarchy之后,我甚至找不到我的UITextView,只有UIImageView似乎在StackView中。我基本上希望我的UITextView在StackView中占用尽可能多的高度,而UIImageView占用了其余部分,但是UIImageView正在全力以赴。

我确实找到了这个错误?

enter image description here

1 个答案:

答案 0 :(得分:0)

我会尝试将textView的内容压缩阻力设置为更高的值,这可能是造成歧义的原因:

textView.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 999), for: .vertical)
相关问题