2012-07-03 36 views
0

我有一個UIView,其中包含兩個以編程方式填充的UILabel對象。我希望左側的UILabel右對齊,並且右側的UILabel左對齊。這是我漂亮的ASCII表示法:獲取兩個相鄰的UILabel以在內邊對齊

___________________ 
| ______ ______ | 
| | ASDF| |ASDF | | 
| |______| |______| | 
|___________________| 

我嘗試了各種各樣的掩碼和對齊屬性無濟於事。這是我認爲正確的解決方案,所以也許有人可以指出我的理解缺陷。

容器UIView需要UIViewAutoResizingFlexibleWidth,以便它可以展開以適應寬度可變的標籤。左側和右側UILabel需要UIViewAutoResizingFlexibleWidth,以便它們展開以適應寬度可變的內容。左邊的UILabel需要UIViewAutoresizingFlexibleRightMargin,這樣左邊距保持不變。右邊的UILabel需要UIViewAutoresizingFlexibleLeftMargin,這樣右邊距保持不變。

概念問題,這個實現:

  • 作爲文本擴展,他們可能只是擴大了彼此仍然將適合

我有重疊的問題,容器,以及因爲右邊距看起來並不像預期的那樣是固定的,而右邊只有很大的差距。

有誰知道什麼可能是一個解決方案?

回答

0

UILabel視圖不會根據文本自動調整其大小。每次更改文字時,您可能都需要致電sizeToFit。如果想要文本換行,還需要手動分配行數。

另外,左邊的標籤不應該是UIViewAutoresizingFlexibleLeftMargin,反之亦然?另一種方式。

0

兩個意見:

  1. AutoresizingMasks不擴大基於視圖的子視圖的變化的觀點,而是在上海華變化的基礎上。這在這裏沒有興趣。它通常對於像superview更改尺寸時由於方向更改而更加有用。還有其他一些情況可能會在理論上使用autoresizingMasks,但我不認爲這是其中之一。

  2. 從邏輯上講,您可以簡單地計算所需文本的寬度,然後相應地設置UILabel的框架。

計算兩個文本標籤的大小,一旦你設置它們的Text屬性,可以這樣做:

CGSize leftSize = [leftLabel.text sizeWithFont:leftLabel.font forWidth:self.view.frame.size.width lineBreakMode:UILineBreakModeWordWrap]; 
CGSize rightSize = [rightLabel.text sizeWithFont:rightLabel.font forWidth:self.view.frame.size.width lineBreakMode:UILineBreakModeWordWrap]; 

現在你知道這兩個標籤的大小,你可以調整相應地,兩個標籤的框架以及它們的超級視圖。