xib 中带有可选 UIImageView 的自定义 UITableViewCell

Custom UITableViewCell with Optional UIImageView in a xib

我在 xib 中创建了一个带有可选 UIImageView 的自定义 UITableViewCell。我创建了标签前缘附加到 imageView 后缘的约束。

imageView 中的图像是可选的,如果我不设置图像,我想 remove/hideimageView 并将标签移到左侧。我试图在 layoutSubviews 的代码中添加和删除约束,但这打破了其他约束。

我走在正确的轨道上吗?我希望它表现得像 Value1/2 的 UITableViewCell 本机样式,如果没有图像集,那么所有内容都会移到左侧。

谢谢

您可以有两个约束,一个用于视图左边缘的文本标签:

|<-(>=10)->[标签]...

|<-(10)->[ImageView]<-(10)->[标签]....

因此,如果您想隐藏所有图像,您可以隐藏 image/deactivate 约束。

没有办法自动实现这一点,因为 UIImageView 无论是否设置图像,它的大小都会保持不变。

一种方法是保留您当前的设置,并在没有图像时将代码中的标签约束更新为 -yourImageView.bounds.size.width。这会在需要时转移您的标签。

是的,您的方向是正确的。做到这一点的简单方法是您必须创建一个图像视图宽度常量的 IBOutlet。见下图。

然后将宽度常量设置为 0

if(// condition to check if imageview does not contain any image){
      _imgVwWidthConst.constant = 0;
}

您的标签会自动向左移动,因为它已将 space 引导至您的图片视图。