目前,在我的 tableView 中向上滚动时,我发现了一个奇怪且烦人的错误。当我决定释放“滚动”时,意味着我正在放下“滚动”,因此“视图”将返回到显示所有 TableView 内容的正常位置,我的一些单元格可以出于某种原因重新调整自己的大小宽度。我不知道为什么会发生这种情况或问题可能是什么。
我的单元格(commentLabel)被定制为 fitSize,具体取决于我论坛中标签的高度。我认为问题可能在于我如何尝试自定义单元格的内容。我将发布我的相关代码并发布到下面的图片中。
在开始向上拖动滚动之前: http ://tinypic.com/view.php?pic=2rfsum9&s=6
释放/放下卷轴后,再次回到正常位置。现在其中一个单元格发生了变化: http ://tinypic.com/view.php?pic=swxnqv&s=6
代码:
- (UITableViewCell *)tableView:(UITableView *)pTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"ForumthreadCell";
UITableViewCell *cell = [pTableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
Feedback *item = [self.items objectAtIndex:indexPath.row];
UILabel *aliasLabel = (UILabel *)[cell viewWithTag:1];
UILabel *commentLabel = (UILabel *)[cell viewWithTag:2];
UILabel *dateLabel = (UILabel *)[cell viewWithTag:3];
[aliasLabel setText:item.alias];
[commentLabel setText:item.comment];
[dateLabel setText:[self.dateFormatter stringFromDate:[NSDate dateWithTimeIntervalSince1970:(double)item.time]]];
commentLabel.numberOfLines = 0;
[commentLabel sizeToFit];
return cell;
}
-(CGFloat)getLabelHeightForText:(NSString *)text andWidth:(CGFloat)labelWidth
{
CGSize maximumSize = CGSizeMake(labelWidth, 10000);
//provide appropriate font and font size
CGSize labelHeighSize = [text sizeWithFont: [UIFont fontWithName:@"Trebuchet MS" size:12.0f]
constrainedToSize:maximumSize
lineBreakMode:UILineBreakModeTailTruncation];
return labelHeighSize.height;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
Feedback *item = [self.items objectAtIndex:indexPath.row];
CGFloat commentTextHeight = [self getLabelHeightForText:item.comment andWidth:162];
return commentTextHeight + 39;
}
编辑
新代码:
CGRect frame = commentLabel.frame;
frame.size.width = kLabelWidth;
frame.size.height = 10000;
commentLabel.frame = frame;
frame = commentLabel.frame;
frame.size.height += kOffset;
commentLabel.frame = frame;
但是我做错了,因为现在来自commentLabel 的文本没有正确显示,有人能在我如何尝试设置框架方面看到我的错吗?这就是细胞现在的样子http://oi50.tinypic.com/2w5u0s6.jpg
新的完整代码:
static const CGFloat kLabelWidth = 162;
static const CGFloat kOffset = 39;
- (UITableViewCell *)tableView:(UITableView *)pTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"ForumthreadCell";
UITableViewCell *cell = [pTableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
Feedback *item = [self.items objectAtIndex:indexPath.row];
UILabel *aliasLabel = (UILabel *)[cell viewWithTag:1];
UILabel *commentLabel = (UILabel *)[cell viewWithTag:2];
UILabel *dateLabel = (UILabel *)[cell viewWithTag:3];
[aliasLabel setText:item.alias];
[commentLabel setText:item.comment];
[dateLabel setText:[self.dateFormatter stringFromDate:[NSDate dateWithTimeIntervalSince1970:(double)item.time]]];
CGRect frame = commentLabel.frame;
frame.size.width = kLabelWidth;
frame.size.height = 10000;
commentLabel.frame = frame;
frame = commentLabel.frame;
frame.size.height += kOffset;
commentLabel.frame = frame;
commentLabel.numberOfLines = 0;
[commentLabel sizeToFit];
return cell;
}