iOS 3.0 和 UITableViewCell 的 numberOfLines=0 有啥问题?
Posted
技术标签:
【中文标题】iOS 3.0 和 UITableViewCell 的 numberOfLines=0 有啥问题?【英文标题】:What's wrong with iOS 3.0 and numberOfLines=0 for UITableViewCell?iOS 3.0 和 UITableViewCell 的 numberOfLines=0 有什么问题? 【发布时间】:2011-02-25 10:17:42 【问题描述】:好的,事情就是这样,现在已经两天尝试构建一个像样的带有字幕样式的 tableview 单元格。
所以我重写了 'tableview:heightforrowatindex:' 方法。美好的 我还将详细信息的行数设置为0。
这在 ios4.0 中运行良好
但是对于 ios 3.0 它没有 似乎 textlabel 和 detailtextlabel 在顶部有一定的边距,这会将所有单元格内容向下推以与下面的单元格重叠。 这是疯狂的行为。而且我找不到在其内容视图中设置 textlabel/detailtextlabel 位置的方法。
请帮忙。 Resizing UITableViewCells in iOS4 versus iOS3这家伙说他要实现自己的控制。但那工作量太大了,对我来说很难。 一定有人已经知道有一种方法可以绕过这个问题。 谢谢
【问题讨论】:
【参考方案1】:实际上,Apple 的人似乎并没有真正让 uitableviewcell 像普通开发人员希望的那样可定制。
所以你必须自己定制它。 并且因为我没有时间覆盖 UITableViewCell 并实现我的自定义。
我做的很仓促。通过
UITableViewCell *cell = [_tableView dequeueReusableCellWithIdentifier:@"cell"];
if( nil == cell )
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"] autorelease];
//contentview
UIImageView * imageView = [[UIImageView alloc]initWithFrame:CGRectMake(1, 5, 11, 9)];
imageView.image=_headerImage;
UILabel* textLabel=[UILabel new];
UILabel* detailTextLabel=[UILabel new];
//get and set the size of the labels here
textLabel.font=_font;
detailTextLabel.font=_fontD;
textLabel.numberOfLines=0;
detailTextLabel.numberOfLines=0;
textLabel.backgroundColor=[UIColor clearColor];
detailTextLabel.backgroundColor=[UIColor clearColor];
textLabel.tag=202;
detailTextLabel.tag=203;
imageView.tag = 204;
[cell.contentView addSubview:imageView];
[cell.contentView addSubview:textLabel];
[cell.contentView addSubview:detailTextLabel];
[textLabel release];
[detailTextLabel release];
[imageView release];
当然在实现时
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
if(!_cellTitleSizes)
_cellTitleSizes= [NSMutableArray new];
_cellDetailSizes= [NSMutableArray new];
MenuItem *tempItem =[self GetItemFromIndexPath:indexPath];
CGSize size = [ tempItem.title sizeWithFont:_font constrainedToSize:_textSize lineBreakMode:UILineBreakModeWordWrap];
CGSize size2 = [[MenuListViewController GetDetailsToDisplay:tempItem] sizeWithFont:_fontD constrainedToSize:_textSize lineBreakMode:UILineBreakModeWordWrap];
//the following information will be used to set the title and description labels in the cell.
[_cellTitleSizes addObject:[NSValue valueWithCGSize:size]];
[_cellDetailSizes addObject:[NSValue valueWithCGSize:size2]];
return MAX( (size.height+size2.height)+ 30, 44.0f );
祝大家好运
【讨论】:
以上是关于iOS 3.0 和 UITableViewCell 的 numberOfLines=0 有啥问题?的主要内容,如果未能解决你的问题,请参考以下文章
ios - Uitableviewcell 中的 Uilabel 和 UIimageview
iOS 8 UITableViewCell 上的弹簧和支柱调整大小损坏
iOS开发UI篇—UITableviewcell的性能优化和缓存机制