2012-10-15 116 views
3

我有一個的UILabel在一個UITableView的一個自定義的細胞類和我使用以下代碼來增加標籤的寬度動態地在其內容的方面:的UILabel動態寬度 - 水平對齊

CGSize sizeToMakeLabel = [cell.cellResult.text sizeWithFont:cell.cellResult.font]; 

cell.cellResult.frame = CGRectMake(cell.cellResult.frame.origin.x, cell.cellResult.frame.origin.y, sizeToMakeLabel.width, sizeToMakeLabel.height); 

的使用上面的代碼出現的問題是,我不能再將標籤右對齊(將其寬度增加到左邊而不是右邊)。

如果我不使用上面的代碼並在IB中將對齊設置爲正確,則對齊起作用。但在這種情況下,我失去了動態寬度。

我已經試過:

cell.cellResult.textAlignment = UITextAlignmentRigth; 
cell.cellResult.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin; 

但沒有任何反應。

有人可以幫我解決這個問題嗎?

回答

5

您不能正確對齊標籤,因爲您爲其框架設置了其實際寬度。

如果你希望它是動態的,但右對齊,你可以這樣做:

CGSize sizeToMakeLabel = [cell.cellResult.text sizeWithFont:cell.cellResult.font]; 

cell.cellResult.frame = CGRectMake(cell.cellResult.frame.origin.x + cell.cellResult.frame.size.width - sizeToMakeLabel.width, cell.cellResult.frame.origin.y, sizeToMakeLabel.width, sizeToMakeLabel.height); 
3

那是因爲你改變設置時,標籤的起源是框架:cell.cellResult.frame.origin.x,

你可以改變邊界僅管理寬度。

2

您可以爲您的標籤等設定的框架:

[self.lblTitle setFrame: CGRectMake(self.lblTitle.frame.origin.x, 
            self.lblTitle.frame.origin.y, 
            [self.lblTitle.text sizeWithAttributes: 
            @{NSFontAttributeName: 
              self.lblTitle.font}].width, 
            self.lblTitle.frame.size.height 
            )]; 

,將工作