隐藏 UIView 和更新约束
Posted
技术标签:
【中文标题】隐藏 UIView 和更新约束【英文标题】:Hiding a UIView & Updating Constraints 【发布时间】:2018-08-01 01:29:02 【问题描述】:我有一个自定义表格视图单元格笔尖,它包含两个 textView、两个 imageView 和 4 个标签。约束是使用自动布局设置的,这就是笔尖的外观:
右侧的主图像视图从数据库中获取一个可选值。如果用户包含了图像,我希望它显示图像,但如果用户没有,我希望隐藏图像并且我希望调整 textView 的约束(左侧的自定义描述)和看起来像这样:
我确信这很容易做到,但我仍在学习,所以我要求的是指向正确的方向。根据存储的值切换约束的最佳方法是什么?
【问题讨论】:
【参考方案1】:您可以设置约束,以便正文文本和图像视图之间有一个水平间距常数,而图像视图与其父视图的边缘之间有另一个水平间距。
从那里,您可以为图像视图创建宽度约束并将其IBOutlet
的constant
设置为0
。
【讨论】:
所以基本上,如果图像不存在,我会将图像视图的宽度设置为 0? 哇,真是天才。谢谢你的想法【参考方案2】:我认为使用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()
【讨论】:
以上是关于隐藏 UIView 和更新约束的主要内容,如果未能解决你的问题,请参考以下文章