我總是被告知,如果我有一個UILabel動態文本內容,我應該使用SizeToFit,因爲這將正確調整UILabel。我使用了sizeToFit,但是在我做了滾動操作後,我的文本標籤就在UITableViewCell上了。然而,在初始屏幕加載時,它們會顯得很好。SizetoFit與UIViewAutoresizingFlexibleHeight。有什麼不同?
與它搞亂了幾個小時後,我讀的地方,別人有同樣的問題,而不是SizeToFit,他們所用的以下兩行:
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;
}