動的テキスト コンテンツを含む UILabel がある場合は、UILabel を適切に調整する SizeToFit を使用する必要があると常に言われていました。sizeToFit を使用しましたが、スクロール後に UITableViewCell にあったテキスト ラベルが台無しになりました。ただし、最初の画面ロードでは問題なく表示されます。
数時間いじった後、他の誰かが同じ問題を抱えていて、SizeToFit の代わりに次の 2 行を使用したことをどこかで読みました。
cell.message.lineBreakMode = UILineBreakModeWordWrap;
cell.message.autoresizingMask = UIViewAutoresizingFlexibleHeight;
そしてそれはうまくいくでしょう。よくやったし、私の UILabels は完璧です。しかし、私はなぜそうなのかを理解することにまだ興味がありますか?
だから今私のコードは次のようになります:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"MessagesCustomViewCell";
MessagesCustomViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MessagesCustomViewCell_iPhone" owner:self options:nil];
cell = [nib objectAtIndex:0]; //you can also loop thru or manually remember positions
}
NSArray * discussion = [self.messages objectAtIndex:indexPath.row];
cell.author.text = [discussion valueForKeyPath:@"author.name"];
cell.message.text = [discussion valueForKey:@"text"]; //DYNAMIC VARIABLE SIZED TEXT
cell.message.lineBreakMode = UILineBreakModeWordWrap;
cell.message.autoresizingMask = UIViewAutoresizingFlexibleHeight;
return cell;
}