有两个视图,有时会出现一个视图,而另一个视图则会占据空间

时间:2014-08-25 15:14:16

标签: ios uistoryboard

我在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];
    }
}

1 个答案:

答案 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];
    }
}