我有三个子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正在全力以赴。
我确实找到了这个错误?
答案 0 :(得分:0)
我会尝试将textView
的内容压缩阻力设置为更高的值,这可能是造成歧义的原因:
textView.setContentCompressionResistancePriority(UILayoutPriority(rawValue: 999), for: .vertical)