第1步 - 这工作正常
我有UITableView加载自定义UITableViewCells
第2步 - 这是有点工作
我更改了UITableViewCell高度,以便UITextView中单元格中包含的所有数据都可见
我设法获取UItextView数据并使用以下代码调整其大小:
UITextView *dummy = [[UITextView alloc] init];
dummy.font = [UIFont systemFontOfSize:14];
dummy.text = cell.textView.text;
CGSize newSize = [dummy sizeThatFits:CGSizeMake(270.0f, 500.0f)];
//get the textView frame and change it's size
CGRect newFrame = cell.textView.frame;
newFrame.size = CGSizeMake(270.0f, fmaxf(newSize.height, 60));
cell.textView.frame = newFrame;
//resize the cell view I add +95 because my cell has borders and other stuff...
CGRect cellFrame = CGRectMake(0, 0, 320, newFrame.size.height+95);
cell.cellView.frame = cellFrame;
然后我设法使用委托函数heightForRowAtIndexPath设置UITableViewCell高度:
现在,当我运行代码并向上和向下滚动表格单元格时,行为并不总是如预期的那样...即单元格大小并不总是正确的大小,但如果我向上和向下滚动它有时会加载再次正确的尺寸。 我想也许dequeueReusableCellWithIdentifier是问题
cellIdentifier = @"tableCell";
ctTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
因为我正在使用相同的标识符回收不同大小的单元格...
有人可以就如何最好地解决这个问题给我一些指导吗?
感谢!!!
答案 0 :(得分:0)
你实现了以下方法吗?
如果它们彼此不同,你应该为每一行设置高度
答案 1 :(得分:0)
我首先在cellForRowAtIndexPath方法中动态添加UITextView。假设(数据数组包含要在单元格内显示的内容) //定义
#define CELL_TEXTVIEW_WIDTH = 320
#define CELL_TEXTVIEW_HEIGHT = 9999
#define PADDING = 5
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"tableCell";
ctTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
if(cell == nil){
cell = [[tableView alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
NSString *_data = [data objectAtIndex:indexPath.row];
CGSize _data_contentsize = [_data sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(CELL_TEXTVIEW_WIDTH, CELL_TEXTVIEW_HEIGHT) lineBreakMode:NSLineBreakModeWordWrap];
UITextView *dummy=[[UITextView alloc] initWithFrame:CGRectMake(5, 5, 290, _data_contentsize +(PADDING * 2))];
// add Font and text color for your textview here
[cell.contentView addSubview:dummy];
return cell;
}
在此之后计算heightForRowAtIndexPath方法下的单元格高度。