我正在建立一个实时IOS仪表板,我需要根据检索到的数据动态显示UITableViewCell内的UI元素(当前是UISlider或UISwitch)。 tableview单元格(和相关的XIB)在左侧有一个标签,在右侧有一个UISwitch或UISlider。
我能够通过每个组件的isHidden属性显示/隐藏UI元素,但是autolayout约束总是将UI元素放在彼此旁边,即使在界面构建器中我将UI组件置于顶部彼此(因为我需要显示滑块或开关,而不是两者)。 BTW - 由于一些RXSwift问题,我无法使用多个UITableViewCell。
答案 0 :(得分:0)
隐藏'属性不会改变自动布局约束
控件将被隐藏,但仍将占据其意图占用的空间
话虽如此,UIStackView
组件会跟踪它的孩子们隐藏的内容'属性并在属性更改时更改约束
您可以将滑块和开关置于UIStackView
内并将其中任何一个设置为可见或不可见
我不会这样做。
我构建了两种单元格,一种是UISwitch
,另一种是UISlider
,并根据内容使用不同的单元格。
答案 1 :(得分:0)
在Swift中,'hidden'属性不是动态var。你无法观察它,但你可以尝试观察属性设定器。
细节:http://simcai.com/2017/03/29/2017-03-29/
let view = UIView()
view.rx.methodInvoked(#selector(setter: showAllView.isHidden)).subscribe { (isHidden) in
print("\(isHidden)")
}
view.isHidden = true