2012-11-05 43 views
1

我總是被告知,如果我有一個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; 
} 

回答

4

sizeToFit

行爲:在上海華盈的規模關心其內容

發送sizeToFit到一個UILabel沒有[yourLabel setNumberOfLines:0]會使標籤儘可能寬以適應文本。雖然[yourLabel setNumberOfLines:0]你的標籤會根據它的寬度將它的文本分解成多行,但這會使它的高度儘可能大以適應它的文本,它並不關心它的超視圖邊界。

autoResizingMask

行爲:關於上海華盈的規模超過其內容

如果UILabel的autoResizingMask護理設置,一旦它的上海華盈的邊界是變化的,它將改變它的框架的第一個,然後它會檢查「我可以在我的電腦裏放更多文字嗎?」基於它的相對屬性(numberOfLines,font,...)。

相關問題