2015-02-09 88 views
0

我試圖讓我的UITableViewCell.textLabel屬性垂直和水平自動適應文本。UITableViewCell適合整個框架的textLabel

現在我的tableView不可滾動,因此cell框架不是動態的。我需要textLabel屬性來自動換行並調整大小爲一組行。將numberOfLines設置爲0不起作用,因爲它被切斷,因爲我的cell高度小於textLabel最終高度。使用numberOfLines的任意數字會切斷文本。

如何調整我的textLabel以適合cellframe

下面

- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    UITableViewCell* cell = (UITableViewCell*)[tableView @"mycell"]; 

    cell.textLabel.text = @"LOTS OF TEXT"; 

    cell.textLabel.textAlignment = NSTextAlignmentCenter; 
    [cell.textLabel textRectForBounds:cell.bounds limitedToNumberOfLines:0]; 
    cell.textLabel.lineBreakMode = NSLineBreakByWordWrapping; 
    cell.textLabel.numberOfLines = 0; 
    cell.textLabel.adjustsFontSizeToFitWidth = YES; 
    cell.textLabel.minimumScaleFactor = .5; 
} 
+0

你的意思是你想調整基於textLable內容的單元格? – 2015-02-09 13:05:48

+0

@sanginadhammurali不,細胞高度是靜態的。我想調整基於靜態高度 – DaynaJuliana 2015-02-09 19:17:57

+0

的'textLabel'的大小,嘗試在nib文件中給出可文本框架的x和y位置(0,0),並且如果文本行超過兩個並且甚至在給出NSLineBreakByWordWrapping之後,則不是然後工作,然後增加可操作的文本。 – 2015-02-10 04:16:40

回答

1

編輯代碼:如果所述細胞是一組高度,這是簡單的。您將不得不在其中設置自定義單元格和textLabel,因爲我不認爲您無法以您需要的方式修改基本或其他預設單元格中的textLabel。只需添加一個文本標籤並將其鏈接到四邊的約束設置爲最小量(可以爲零)。如果有額外的空間,標籤會自動垂直居中放置文本,因此使標籤太高不應成爲問題。

原來的答覆:


如果你不使用的tableView自調整大小的細胞,也許支持的iOS 7,那麼它不會不管你在小區做什麼,因爲這個問題是在tableView行高。如果一個標籤經典的boundingRect方法將起作用。在tableView:heightForRowAtIndexpath:

NSString *stringFromDataSource = @"Text For Label"; 
    CGSize potentialSize = CGSizeMake(CGRectGetWidth(self.tableview.frame), CGFLOAT_MAX); 
    NSStringDrawingOptions optionsForMultiline = NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading; 
    NSDictionary *attributes = @{ 
          NSFontAttributeName : [UIFont preferredFontForTextStyle:UIFontTextStyleBody] 
          }; //or whatever 
    CGRect rectForText = [stringFromDataSource boundingRectWithSize:potentialSize 
            options:optionsForMultiline 
            attributes:attributes 
            context:nil]; 
    return CGRectGetHeight(rectForText); 

注意,在你的問題,你的上漿細胞的各種選項都不會,如果爲textLabel與自動佈局擴展到使用,除非有約束封蓋的最大尺寸,在這點minimumScaleFactor等等。

+0

我希望我的單元格是靜態高度,所以不會出現上述問題? – DaynaJuliana 2015-02-10 00:30:06

+0

這仍然不起作用。使用包含邊距的自動佈局的UILabel創建自定義原型單元仍會切斷標籤文本 – DaynaJuliana 2015-02-10 05:17:33