Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何扩展&;使用自动布局折叠UIView_Ios_Uitableview_Autolayout - Fatal编程技术网

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
}