UITableViewCell-如何更改selectedBackgroundView,默认ImageView,textLabel,detailTextLabel框架

时间:2014-09-15 18:39:41

标签: ios objective-c uitableview

我正在创建行高100的tableview,每行之间我想要一个5像素的间隙。对于每一行,我在第95行' y'添加uiview(宽度:320px,高度:1px)。位置。现在一切都很顺利。但是当我选择单元格时,行选择背景视图覆盖整行i。但是我想将selectedbackgroundview行的行设置为95。

我在cellForRowAtIndexPath尝试了以下方式,但没有用,请帮助我。

cell.selectedBackgroundView.frame = CGRectMake (0, 0, 320, 95);

3 个答案:

答案 0 :(得分:12)

感谢您的回答,终于得到了解决方案。

我们可以通过创建自定义单元格来调整selectedBackgroundView框架。解决问题的步骤。

  1. 首先,我们必须使用UiTableViewCell作为子类创建类
  2. layoutSubviews方法下的内容中,我们可以更改与selectedBackgroundView,defalut imageViewtextLabeldetailTextLabel帧相关的tableviewcell相关视图帧

    更改selecteddBackgroundView框架

     - (void )layoutSubviews {
    // always try to set frame in layoutSubviews
    [super layoutSubviews];
    self.selectedBackgroundView.frame = CGRectMake(10, 0, self.frame.size.width - 20, 88);
     }
    

    更改textLabel,detailTextLabel框架

        - (void)layoutSubviews {// always try to set frame in layoutSubviews
        [super layoutSubviews];
        self.textLabel.frame = CGRectMake(0, 0, 50, 20);
        self.detailTextLabel.frame = CGRectMake(55, 0, 225, self.frame.size.height);
    
       }
    

答案 1 :(得分:1)

迅速:

override func layoutSubviews() {
    super.layoutSubviews()
    // containerView -> Is a view with constraints in the storyboard where I whish to see the selection
    selectedBackgroundView?.frame = containerView.frame
}

答案 2 :(得分:0)

只是一个想法

  1. 您可以在numberOfSectionsInTableView

  2. 中使用多个部分tableview传递array.Count 每个部分中的
  3. numberOfRowsInSection将为1

  4. heightForHeaderInSection中传递5px,以便每行之间有5px的间隙

  5. 将95 px传递给heightForRowAtIndexPath,因为您希望单元格的高度为95,

  6. cellForRowAtIndexPath代替indexPath.row,您必须处理indexPath.section

  7. 如果我错过了什么,请告诉我。我认为它会做你想要实现的目标。希望它有所帮助