在 xib 中带有可选 UIImageView 的自定义 UITableViewCell
Posted
技术标签:
【中文标题】在 xib 中带有可选 UIImageView 的自定义 UITableViewCell【英文标题】:Custom UITableViewCell with Optional UIImageView in a xib 【发布时间】:2016-10-14 20:35:35 【问题描述】:我在 xib 中创建了一个带有可选 UIImageView 的自定义 UITableViewCell。我创建了标签前缘附加到 imageView 后缘的约束。
imageView 中的图像是可选的,如果我不设置图像,我想删除/隐藏 imageView 并将标签移到左侧。我试图在 layoutSubviews 的代码中添加和删除约束,但这破坏了其他约束。
我在正确的轨道上吗?我希望它的行为类似于 Value1/2 的 UITableViewCell 原生样式,如果没有图像集,则所有内容都向左移动。
谢谢
【问题讨论】:
【参考方案1】:是的,你在正确的轨道上。最简单的方法是你必须为你的 imageview widht 常量创建一个 IBOutlet。见下图。
然后将宽度常量设置为 0
if(// condition to check if imageview does not contain any image)
_imgVwWidthConst.constant = 0;
您的标签将自动向左移动,因为它在您的图像视图中有前导空间。
【讨论】:
谢谢。虽然可能感觉不是正确的解决方案,但它确实有效。我认为实际上删除 imageView 并更新所有约束将是正确的解决方案。我唯一要做的另一件事是更新几个约束,使其常数大于或等于。【参考方案2】:您可以有两个约束,一个用于视图左边缘的文本标签:
|=10)->[标签]...
|[ImageView][标签]....
因此,如果您想隐藏所有图像,您可以隐藏图像/停用约束。
【讨论】:
【参考方案3】:没有办法让这种情况自动发生,因为UIImageView
会保持其大小,无论它是否设置了图像。
一种方法是保留您当前的设置,并在不存在图像时将代码中的标签约束更新为-yourImageView.bounds.size.width
。这会在需要时转移您的标签。
【讨论】:
以上是关于在 xib 中带有可选 UIImageView 的自定义 UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章