2016-12-28 40 views
0

我有兩個標籤,L1和L2的變量和不相同的長度。我想在Xcode中使用約束來放置這兩個標籤。如果可能的話,我不想以編程方式操縱約束。將不勝感激。iOS - 將兩個標籤放在其超級視圖的中心

Right image should be the expected output

右圖像應是預期的輸出

要求,

  1. 兩個標籤是在非相同寬度
  2. 當運行導致L1的空間和尾隨L2的空間將等於
  3. L1之間的距離& L2,水平空間是固定的, 10 PX
  4. UIStackView不能使用

我怎麼能做到這一點從Xcode的?

回答

5

你可以做的是把兩個UILabel一個UIView,然後裏面:

  • 添加的領先,頂部和底部的上海華HELUILabel
  • 添加尾隨,頂部和底部到superView到您的HEAVENLYUILabel
  • 加入的10點水平間距之間你的兩個UILabel

現在的水平和垂直居中的UIView在屏幕的中間。設置在水平中心約束優先250添加的領先和你UIView的尾部空間,其上海華>= 5約束

編輯:此外,如果文本太大,則上述限制AREN」 t只需完全工作(您將必須將numberOfLines設置爲0和換行模式wordWrap顯示完整的文本,當然轉到下一行)!由於UILabel推測高度推斷寬度優先級爲750,並且默認情況下每個UILabel的內容壓縮阻力優先級也是750,所以Xcode會困惑該怎麼做,並且正確如此!你可以做的是設置在屬性檢查器中內容壓縮財產1000

enter image description here

OR

如果你不希望與壓縮性鼓搗(我用於發現它們可怕),你還可以做的是在每個UILabel的寬度和高度上添加一個>=約束。如果明確定義高度和寬度使它們的優先級爲1000,那麼給出這個約束也將顯示完整的文本,無論它有多大。

+1

給出相同的基線,以便它們可以保持其水平對齊相同。 – Ballu

+0

'UIView的高度將是未知的權利? Xcode如何處理它? –

+1

'UIView'的高度和寬度將從其內容推斷出來。在這種情況下,兩個'UILabel' – Rikh

-1

是你的L1和L2的寬度是固定值還是不確定值?

如果寬度固定,您可以使用砌體來實現效果。

+0

那些是不確定的。這就是問題出現的原因。 –

相關問題