隐藏UIView和更新约束

时间:2018-08-01 01:29:02

标签: ios swift firebase autolayout constraints

我有一个自定义的表格视图单元格笔尖,其中包含两个textView,两个imageViews和4个标签。约束是使用自动布局设置的,这是笔尖的外观:

enter image description here

右侧的主图像视图从数据库中获取一个可选值。如果用户包括了图像,则希望它显示图像,但是如果用户没有,则希望图像被隐藏,并且希望调整textView的约束(左侧的自定义说明),并看起来像这样:

enter image description here

我敢肯定这很简单,但是我仍在学习,因此我所要求的是指向正确的方向。基于存储的值切换约束的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

您可以设置约束,以便在正文文本和图像视图之间有一个水平间距常量,在图像视图与它的超视图边缘之间有一个水平间距。

从那里,您可以为图像视图创建宽度约束,并将其constant的{​​{1}}设置为IBOutlet

答案 1 :(得分:1)

我认为使用UIStackView s最容易做到这一点。

对于左侧的许多标签,请将其置于垂直堆栈视图中,或仅放置在常规UIView中。然后将其父视图与图像一起放在水平堆栈视图中。水平堆栈视图应按比例填充。

在配置表格视图单元格时,根据需要添加/删除图像视图。这是一些伪代码:

if data[indexPath.row].image != nil
    if imageView.parent == nil 
        horizontalStackView.addArrangedSubview(imageView)
    imageView.image = data.image
else if imageView.parent != nil
    imageView.removeFromSuperview()