Ios 如何扩展&;使用自动布局折叠UIView
这是我的Ios 如何扩展&;使用自动布局折叠UIView,ios,uitableview,autolayout,Ios,Uitableview,Autolayout,这是我的UITableViewCell中的结构,当用户从右向左滑动view1移动view2和view3时,用户可以看到,因为view1覆盖了view2和view3 当view1移动时,我试图折叠和展开view2和view3,但view2和view3的最大宽度应为50。如何使用自动布局?您可以通过在XiB或LayoutSubviews(如果在代码中)中为view2和view3指定宽度约束来实现这一点,首先将两个视图的宽度约束设置为0,然后在用户滑动时将每个视图的宽度约束设置为50,然后重新布局
UITableViewCell
中的结构,当用户从右向左滑动view1
移动view2
和view3
时,用户可以看到,因为view1
覆盖了view2
和view3
当
view1
移动时,我试图折叠和展开view2
和view3
,但view2
和view3
的最大宽度应为50。如何使用自动布局
?您可以通过在XiB或LayoutSubviews(如果在代码中)中为view2和view3指定宽度约束来实现这一点,首先将两个视图的宽度约束设置为0,然后在用户滑动时将每个视图的宽度约束设置为50,然后重新布局
self.view2WidthCon.constant = 50
self.view3WidthCon.constant = 50
UIView.animate(withDuration: 0.25,animations:
{
self.view.layoutIfNeeded()
})
您可以通过在XiB或LayoutSubviews(如果在代码中)中为view2和view3指定宽度约束来实现这一点,首先将两个视图的宽度约束设置为0,然后在用户滑动时将每个视图的宽度约束设置为50并重新布局
self.view2WidthCon.constant = 50
self.view3WidthCon.constant = 50
UIView.animate(withDuration: 0.25,animations:
{
self.view.layoutIfNeeded()
})
如果
view2
和view3
将包含子视图,则将其宽度设置为0
可能会打破其子视图约束,从而导致错误
这是UIStackView
的理想用例。将所有三个视图(view1
、view2
和view3
)放置在水平视图中。默认情况下,将视图2和3设置为隐藏。当用户向左滑动时,只需显示视图2和3(view2.ishiden=false
和view3.ishiden=false
)
这种方法的优点是,如果视图2和视图3具有具有自动布局的子视图,则在隐藏/显示视图时不会打断它们
要添加动画,只需将其放入动画块中:
UIView.animateWithDuration(0.3){
view2.hidden = false // or true
view3.hidden = false // or true
}
如果
view2
和view3
将包含子视图,则将其宽度设置为0
可能会打破其子视图约束,从而导致错误
这是UIStackView
的理想用例。将所有三个视图(view1
、view2
和view3
)放置在水平视图中。默认情况下,将视图2和3设置为隐藏。当用户向左滑动时,只需显示视图2和3(view2.ishiden=false
和view3.ishiden=false
)
这种方法的优点是,如果视图2和视图3具有具有自动布局的子视图,则在隐藏/显示视图时不会打断它们
要添加动画,只需将其放入动画块中:
UIView.animateWithDuration(0.3){
view2.hidden = false // or true
view3.hidden = false // or true
}