我正在创建行高100的tableview,每行之间我想要一个5像素的间隙。对于每一行,我在第95行' y'添加uiview(宽度:320px,高度:1px)。位置。现在一切都很顺利。但是当我选择单元格时,行选择背景视图覆盖整行i。但是我想将selectedbackgroundview行的行设置为95。
我在cellForRowAtIndexPath
尝试了以下方式,但没有用,请帮助我。
cell.selectedBackgroundView.frame = CGRectMake (0, 0, 320, 95);
答案 0 :(得分:12)
感谢您的回答,终于得到了解决方案。
我们可以通过创建自定义单元格来调整selectedBackgroundView框架。解决问题的步骤。
在layoutSubviews
方法下的内容中,我们可以更改与selectedBackgroundView
,defalut imageView
,textLabel
,detailTextLabel
帧相关的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)
只是一个想法
您可以在numberOfSectionsInTableView
numberOfRowsInSection
将为1
在heightForHeaderInSection
中传递5px,以便每行之间有5px的间隙
将95 px传递给heightForRowAtIndexPath
,因为您希望单元格的高度为95,
在cellForRowAtIndexPath
代替indexPath.row
,您必须处理indexPath.section
如果我错过了什么,请告诉我。我认为它会做你想要实现的目标。希望它有所帮助