TableViewCell のレイアウトに問題があります。現在、tableView を上にスクロールすると、奇妙で迷惑なバグが見つかりました。「スクロール」を解放することにした場合、つまり「スクロール」をドロップしているため、「ビュー」は通常の位置に戻り、TableView のすべてのコンテンツが表示されます。一部のセルは、何らかの理由でサイズを変更できます。幅。なぜこれが発生するのか、何が問題なのかはわかりません。
すべてのセルは、フォーラムのラベル (commentLabel) の高さに応じて fitSize にカスタマイズされています。問題は、セルのコンテンツをカスタマイズしようとしている方法にあると思われます。関連するコードを投稿し、下の写真にも投稿します。
スクロールを上にドラッグする前に: http://tinypic.com/view.php?pic=2rfsum9&s=6
スクロールを通常の位置に放したりドロップした後。セルの 1 つが変更されました: 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];
[aliasLabel sizeToFit];
[dateLabel 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;
}
編集
NSLog(@"bounds.origin.x: %f", commentLabel.bounds.origin.x);
NSLog(@"bounds.origin.y: %f", commentLabel.bounds.origin.y);
NSLog(@"bounds.size.width: %f", commentLabel.bounds.size.width);
NSLog(@"bounds.size.height: %f", commentLabel.bounds.size.height);
NSLog(@"frame.origin.x: %f", commentLabel.frame.origin.x);
NSLog(@"frame.origin.y: %f", commentLabel.frame.origin.y);
NSLog(@"frame.size.width: %f", commentLabel.frame.size.width);
NSLog(@"frame.size.height: %f", commentLabel.frame.size.height);
1つのセルに対してこの出力が得られました(1つのcommentLabel出力)
purgeIdleCellConnections: found one to purge conn = 0x1dd654f0
bounds.origin.x: 0.000000
bounds.origin.y: 0.000000
bounds.size.width: 162.000000
bounds.size.height: 10039.000000
frame.origin.x: 12.000000
frame.origin.y: 28.000000
frame.size.width: 162.000000
frame.size.height: 10039.000000