自定义uitableviewcell重置子视图框架不能按我的意愿工作

时间:2014-08-12 11:44:28

标签: ios uitableview

我使用nib自定义了一个uitableviewcell,并希望自定义突出显示的样式。当单元格突出显示时,我想减小单元格子视图的大小,并保持单元格中图像视图的位置不变。因此,看起来像是图像视图的框架缩小了,但图像本身不会改变其位置。

但是,这段代码片段不能正常工作。有人可以帮我弄清楚我错在哪里。任何帮助将不胜感激!

提示:imageview是self.frameView的子视图,frameView是frameBgView的子视图。

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
{
    if (highlighted)
    {
        self.frameView.backgroundColor = UIColorFromRGBA(0, 0, 0, 0.1);
        CGRect rect = self.frameBgView.frame;
        rect.origin.x += 10;
        rect.size.width -= 20;
        self.frameBgView.frame = rect;

        rect = self.frameView.frame;
        rect.origin.x -= 10;
        self.frameView.frame = rect;

    }
    else
    {
        ....

    }
}

编辑:一些截图来解释这个问题: cell not highlighted

cell highlighted

1 个答案:

答案 0 :(得分:1)

oky我尝试了你的解决方案,但我得到这样的我发布代码以及输出它看起来如何,如果有任何问题只是评论,我被删除frameBgView它不是必需的

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
  {
    if (highlighted)
    {
      self.frameView.backgroundColor = [UIColor grayColor];
      CGRect rect = self.contentView.bounds;
      rect.origin.x += 15;
      rect.size.width -= 30;


    //rect = self.frameView.frame;
    // rect.origin.x -= 10;
      self.frameView.frame = rect;

   }
   else
  {
    self.frameView.backgroundColor = [UIColor whiteColor];
    CGRect rect = self.contentView.bounds;
    rect.origin.x += 10;
    rect.size.width -= 20;
    self.frameView.frame = rect;

  }

}

我没有使用自动布局..我得到的结果是,

之前

before selection

并突出显示后,

enter image description here

修改

这是细胞结构

enter image description here

正如你在图片中看到的那样,content view我添加了frameView这是蓝色的,并且在frameView内我添加了imageView并且还没有&# 39;忘记设置内容模式scale to fill并自动调整frameViewimageView的屏蔽大小,例如

自动调整content view

的面具

enter image description here

自动调整frameView

的面具

enter image description here

自动调整imageView

的面具

enter image description here

结束编辑