如何正确显示/隐藏UI控件&处理约束

时间:2017-02-06 22:29:55

标签: ios swift uitableview autolayout

我正在建立一个实时IOS仪表板,我需要根据检索到的数据动态显示UITableViewCell内的UI元素(当前是UISlider或UISwitch)。 tableview单元格(和相关的XIB)在左侧有一个标签,在右侧有一个UISwitch或UISlider。

我能够通过每个组件的isHidden属性显示/隐藏UI元素,但是autolayout约束总是将UI元素放在彼此旁边,即使在界面构建器中我将UI组件置于顶部彼此(因为我需要显示滑块或开关,而不是两者)。 BTW - 由于一些RXSwift问题,我无法使用多个UITableViewCell。

2 个答案:

答案 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