在 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的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5中带有可选参数的url中的两个斜杠

ASP.NET Web API 中带有可选参数的属性路由

行中带有可点击项目的 Android ListView 会导致继续滚动出现问题

在 xib 中带有 alpha 的 UIView 背景颜色

react-native 中带有可折叠部分标题的部分列表

iOS 9 中带有 UIImageView 的 UIImageWriteToSavedPhotosAlbum