我在TableCell(以及其他元素)中有一个彼此相邻的图像和标签。有时必须显示图像,有时不显示。
我想要的是,当必须隐藏图像时,标签占据所有空间,并且在必须显示图像时尊重其空间(因此它不会出现在图像上)。
在Android中我不会有问题;我将这两个元素放在LinearLayout中,当我必须隐藏它时,我会将图像的可见性标记为GONE,然后文本会在图像应该自然的地方开始。但是有了故事板,我有点失落,我不知道如何控制这种想要的行为。是否有类似我在Android上提到过的技术?我必须在没有AutoLayout的情况下实现它。
当图像存在时,我尝试更改标签框架的原点,但是当表格下载新元素时,它变得非常奇怪:
- (void)displayImage
{
self.image.hidden = !_question.showImage;
// Make a bit extra space for the image
if(_question.showImage){
CGRect labelFrame = [self.unreadLabel frame];
labelFrame.origin.x = labelFrame.origin.x +20;
[self.unreadLabel setFrame:labelFrame];
}
}
答案 0 :(得分:0)
好吧,我没有考虑到细胞被回收利用,而且当文本必须占用所有空间时我也必须设置它们。
结果方法如下所示:
- (void)displayImage
{
self.image.hidden = !_question.image;
// Make a bit extra space for the image
CGRect labelFrame = [self.unreadLabel frame];
CGRect imageFrame = [self.image frame];
if(_question.showimage){
labelFrame.origin.x = imageFrame.origin.x + imageFrame.size.width + 3;
[self.unreadLabel setFrame:labelFrame];
} else{
labelFrame.origin.x = imageFrame.origin.x ;
[self.unreadLabel setFrame:labelFrame];
}
}