我有一些TableView
使用基本或副标题UITableViewCell
并显示图像/图标。分隔线自动缩进并从标签显示的位置开始。到现在为止还挺好。 (see correct behavior)
现在我需要更多标签和图像。因此,我创建了一个包含4个标签的自定义TableViewCell
。没有图像,它们按预期工作。但是当我将图像添加到现有标准ImageView
时,会显示图像,分隔线会缩进,但自定义标签不会。它们覆盖了图像。 (see wrong behavior)
我是否还必须创建自定义ImageView
以使其正常工作以及分隔线如何以这种方式缩进,或者是否还有其他可能/现有技术可以做类似的事情?
答案 0 :(得分:0)
<强> 1。首先创建所有四个自定义元素的出口,如标签和图像视图: - lblOne,lblTwo,lblThree,imageView。
<强> 2。然后去查看Viewdidload并创建一个字典: -
NSDictionary *viewsDictionary = @{@" @"superview":self.view,
@"lblOne":self.lblOne,
@"lblTwo":self.lblTwo,
@"lblThree":self.lblThree,
@"imageView":self.imageView
};
第3。现在以编程方式添加Autolayout约束: -
NSArray *lblOutletCenterConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[superView]-(<=1)-[lblOne]" options:NSLayoutFormatAlignAllCenterX metrics:nil views:viewsDictionary];
[self.view addConstraints:lblOutletCenterConstraint];
NSArray *lblOutletCenterConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[superView]-(<=1)-[lblTwo]" options:NSLayoutFormatAlignAllCenterX metrics:nil views:viewsDictionary];
[self.view addConstraints:lblOutletCenterConstraint];
NSArray *captionTopConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[lblOne]-25-[imageView]" options:0 metrics:nil views:viewsDictionary];
[self.view addConstraints:captionTopConstraint];
NSArray *captionTopConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[lblTwo]-25-[lblThree]" options:0 metrics:nil views:viewsDictionary];
[self.view addConstraints:captionTopConstraint];
<强> 4。或者你也可以通过故事板来做到这一点。
答案 1 :(得分:0)
我最终得到的解决方案是我创建了一个空的Interface Builder文档,添加了TableViewCell
,将Label
和ImageView
放在上面,设置约束,将所有内容连接到对应的* .swift文件。完。我希望重用默认ImageView
中的TableViewCell
,但显然无效(或者我太愚蠢)。