我有UIView
个子类UIViewA
。它包含另一个视图UIViewB
,该视图是使用依赖注入从代码中的某处设置的。
class UIViewA {
var viewB: UIViewB { // injected
substitudeView()
attachWithConstraints()
}
func chargeWithContent(_ some: Some) {
viewB.chargeWithContent(some)
}
}
class UIViewB {
func chargeWithContent(_ some: Some) {
label1.text = some.text1
label2.text = some.text2
}
}
UIViewB
的{{1}}带2个标签。
在这种情况下,一切正常。
但是,如果我想根据Some的类型有不同的看法,那么我会遇到一些问题。因此,使用
UIStackView
第一个标签的高度为0,即使它具有要显示的内容。有什么主意吗?
class UIViewA {
var selectedView: UIViewBOrCProtocol! {
substitudeView()
attachWithConstraints()
}
var viewB: UIViewB // injected
var viewC: UIViewC // injected
func chargeWithContent(_ some: Some) {
if sekectedView == nil {
if some.isB {
selectedView = viewB
} else {
selectedView = viewC
}
}
viewB.chargeWithContent(some)
}
}
class UIViewB {
func chargeWithContent(_ some: Some) {
label1.text = some.text1
label2.text = some.text2
}
}
看起来像这样:
attachWithConstraints
它基本上将所有方面附加到superview。
第一个实现效果很好,所以我认为问题不存在约束