此代码应在单元格上划一条线:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if (nil==cell){
cell = [[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
}
NSString *currentCourseName=[courseKeys objectAtIndex:[indexPath row]];
[[cell textLabel] setText:currentCourseName];
NSLog(currentCourseName);
CGSize size = [cell.textLabel.text sizeWithFont:cell.textLabel.font];
CGFloat y = cell.contentView.frame.size.height / 2;
UIView *line = [[UIView alloc] initWithFrame:CGRectMake(5,y,size.width, 3)];
line.backgroundColor = [UIColor redColor];
[cell.textLabel addSubview:line];
return cell;
}
但似乎我必须多次滚动才能看到红线。
答案 0 :(得分:2)
我在你的代码中看到了两个问题。
第一
CGFloat y = cell.contentView.frame.size.height / 2
;
创建单元格时frame
的{{1}}是多少?如果要将子视图添加到标签,请使用标签的高度。
contentView
第二
CGSize size = [cell.textLabel.text sizeWithFont:cell.textLabel.font];
UIView *line = [[UIView alloc] initWithFrame:CGRectMake(5, cell.textLabel.bounds.size.height / 2.0f - 1.5f, size.width, 3)];
line.autoresizingMask = (UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin);
如果重复使用单元格,则在已有行时向单元格添加行。首先检查[cell.textLabel addSubview:line];
子视图是否计数。
textLabel
答案 1 :(得分:1)
我认为您添加的视图,而不是在您的(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
mehod中添加,请尝试使用自定义单元格概念。这解决了我UITableView
。
答案 2 :(得分:0)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if (nil==cell){
cell = [[UITableViewCell alloc]
initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
NSString *currentCourseName=[courseKeys objectAtIndex:[indexPath row]];
[[cell textLabel] setText:currentCourseName];
NSLog(currentCourseName);
CGSize size = [cell.textLabel.text sizeWithFont:cell.textLabel.font];
CGFloat y = cell.contentView.frame.size.height / 2;
UIView *line = [[UIView alloc] initWithFrame:CGRectMake(5,y,size.width, 3)];
line.backgroundColor = [UIColor redColor];
[cell.contentView addSubview:line];
}
return cell;
}