2016-03-15 48 views
0

我從遠程URL獲取我的UILabel文本,有時文本太短/太長,我需要將框架大小調整爲文本高度。 我用xib實現了服裝單元格。更改桌面單元格內的UILabel框架高度

screenshot

這是我試過到目前爲止,這應該是工作,但不要爲一個原因,我無法理解工作:

cell.fbLastObject.text = [NSString stringWithFormat:@"%@",update.fbLastObject]; 
[cell.fbLastObject sizeToFit]; 

//Cell Size 
CGSize labelSize = [cell.fbLastObject.text sizeWithFont:cell.fbLastObject.font 
             constrainedToSize:cell.fbLastObject.frame.size 
              lineBreakMode:NSLineBreakByWordWrapping]; 
labelHeight = labelSize.height; 
cell.fbLastObject.frame = CGRectMake(0,0,300,labelHeight); 

任何人有任何想法?

+0

您是否在使用自動佈局? –

+0

您是否將行數設置爲0. –

回答

0

您可以嘗試self.tblView.rowHeight = UITableViewAutomaticDimension;

對於動態電池使用自動佈局

0

您可以通過的UILabel的映射高度約束做,計算從遠程URL文本的大小,並根據行的是計算出的高度回報高,也給該高度映射的高度約束出口和返回單元格之前只寫: -

[cell.UILabel updateConstraints];

1

iOS 8 and later,您可以使用UITableViewAutomaticDimension把下面的代碼在viewDidLoad是:

tableView.rowHeight = UITableViewAutomaticDimension; 
    /* any estimated height but must be more than 2 */ 
    tableView.estimatedRowHeight = 160.0; 
    tableview.delegate = self; 
    tableview.dataSource = self; 
// you have created the SimpleTableViewCell.xib, So you need to register that cell with table. 
    UINib *nib = [UINib nibWithNibName:@"SimpleTableViewCell" bundle:nil]; 
    [tableview registerNib:nib forCellReuseIdentifier:@"SimpleTableViewCell"]; 

現在,添加適當的cell fbLastObject約束(頂部,底部,開頭和結尾)引腳超級查看&設置的數行數爲0

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *cellIdentifier = @"SimpleTableViewCell"; 

    SimpleTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath]; 
    // here set text for your cell label 
    cell.fbLastObject.text = @"My Text"; 

    [cell setNeedsLayout]; 
    [cell layoutIfNeeded]; 

    return cell; 
} 
+0

您是否意味着此限制?因爲它不工作http://i.imgur.com/q5g2Qpq.png – Elikos

+0

你添加的屏幕截圖所顯示的限制是正確的,實際上我是在表格單元格中只有一個標籤的東西,這就是爲什麼建議遵循下面的約束頂部,底部,引導和尾隨引腳到超級視圖。 但正如我所看到的截圖標籤沒有正確的框架。 –

+0

您應該爲單元格的所有子視圖添加足夠的,非歧義的,可滿足的佈局約束,以便佈局引擎自動爲您計算tableview高度。 如果你的限制是正確的,上面的代碼將正常工作。如果您有任何問題,請告訴我,我會提供幫助。 –

0

在你的問題中,你採取的步驟來獲取標籤的大小是好的。使標籤的屬性SizeToFit和NumberOfLines爲0並向其添加適當的約束。然後爲Label的Height約束創建一個NSLayoutConstraint的實例,並將其附加到UITableViewCell的底部。然後,當你從文本中得到CGSize時,你需要調用UpdateConstraintIfNeeded on self,然後需要爲該Label的約束&設置高度常量屬性,需要設置UITableVIew的heightForRowAtIndexpath。 希望這會起作用。

相關問題