Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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
TableviewCell视图';在ios中包装内容_Ios_Objective C - Fatal编程技术网

TableviewCell视图';在ios中包装内容

TableviewCell视图';在ios中包装内容,ios,objective-c,Ios,Objective C,我在UITableviewCell中有3个视图。第一个视图需要匹配父视图(如android中),另外两个视图需要包含包装内容。当我隐藏其中一个视图时,其他两个视图应占据单元格。如果隐藏2个视图,则视图的其余部分将占据该单元。我们如何使用自动布局或任何其他概念来实现这一点 当我隐藏第三个视图时,第一个图像作为三个视图,其余两个视图调整其单元格宽度。 我刚试过 if(color==1){ view2.hidden=true; view3.hidden=true; }else if

我在UITableviewCell中有3个视图。第一个视图需要匹配父视图(如android中),另外两个视图需要包含包装内容。当我隐藏其中一个视图时,其他两个视图应占据单元格。如果隐藏2个视图,则视图的其余部分将占据该单元。我们如何使用自动布局或任何其他概念来实现这一点

当我隐藏第三个视图时,第一个图像作为三个视图,其余两个视图调整其单元格宽度。 我刚试过

if(color==1){
    view2.hidden=true;
    view3.hidden=true;
}else if(color==2){
     view3.hidden=true;
}
iOS中的
UITableView()
使用重用标识符在整个生命周期中重用单个单元(至少在某些情况下是这样)。要在单元内实现这种行为,可以遵循几种方法。最简单的方法如下

使用UIStackView()。

在这种情况下,可以使用
UIStackView()
将所有这些
UIView()
对象附加到单元格中
UIStackView()
本身继承自
UIView()
,但功能有限。用于管理视图的布局。以下是故事板中的ViewController屏幕截图,您可以按照该截图进行操作

在UITableViewCell()内设置视图

请记住-此处未使用任何约束

将所有这些视图附加到UIStackView()中

到目前为止未使用任何约束:)

将约束添加到UIStackView()

最后,您可以向stackview而不是子视图添加约束(顺便说一句,您还可以更改uistackview的分布/填充属性,是的,您还可以设置约束)

现在我们已经完成了故事板的设置。您可以将
UITableviewCell()
子类中的所有子视图导出,并根据需要隐藏它们。隐藏后,rest视图将相应调整大小。有关更多信息,您可以浏览以下代码段

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
 if let cellOfTableView = tableView.dequeueReusableCell(withIdentifier: "cellIdentiferForOrderStatus", for: indexPath) as? OrderSuccessFailureDetailsTableViewCell{
  cellOfTableView.view3.isHidden = true
  //cellOfTableView.stackView.layoutIfNeeded() //You can call this if the layout has not properly managed.
   }
}
注意——你也可以使用约束来实现同样的目标。您只需对所有子视图进行约束,并使用IBOutlets访问这些子视图。隐藏这些子视图中的任何一个子视图时,只需相应地更新动画块内的约束,以实现平滑过渡

以上代码在Swift 3.0/Xcode 8.2.1中


希望这有帮助。

您可以使用
StackView
或优先级约束。谢谢。你能举一些隐修会约束的例子吗?我不确定这是否有用。检查一下:谢谢。“但是你能说出StackView以外的其他方法吗?”Ishwarya检查答案本身。最后,我很少讨论如何使用约束..:)。非常乐意帮忙。