如何扩展&使用自动布局折叠UIView

时间:2018-04-02 19:23:28

标签: ios uitableview autolayout

enter image description here

这是UITableViewCell内部的结构,当用户从右向左滑动view1移动和view2&用户可以看到view3,因为view1覆盖了view2& view3

我正试图崩溃&展开view2&当view3移动但view1&的最大宽度时,view2 view3应为50.如何使用auto layouts

2 个答案:

答案 0 :(得分:2)

您可以通过为view2&分配宽度约束来实现这一点。在XiB中的view3或layoutSubiews(如果在代码中),最初为两个视图设置宽度约束为0,然后当用户滑动为每个视图设置为50并重新布局时

 self.view2WidthCon.constant = 50
 self.view3WidthCon.constant = 50

 UIView.animate(withDuration: 0.25,animations:    
{
   self.view.layoutIfNeeded()
})

答案 1 :(得分:0)

如果view2view3包含子视图,则将其宽度设置为0可能会破坏其子视图约束,从而导致错误。

这是UIStackView的理想用例。将所有三个视图(view1view2view3)放在水平UIStackView内。默认情况下,将视图2和3设置为隐藏。当用户向左滑动时,只需显示视图2和3(view2.isHidden = falseview3.isHidden = false)。

这种方法的优点是,如果视图2和3具有自动布局的子视图,则在隐藏/显示视图时它们不会被破坏。

要添加动画,只需将其放入动画块:

UIView.animateWithDuration(0.3){
    view2.hidden = false // or true
    view3.hidden = false // or true
}