2017-02-20 103 views
0

我有3個標籤彼此相鄰這樣只允許標籤儘可能寬?

stackview

第一和最後一個標籤將要動態地填充有可變長度的單詞的水平堆疊視圖中,而中間的一個總是將包含單詞「with」,例如:「用Swift編碼!」

我不想在每個單詞之間留出額外的空間,因爲如果單詞很短,看起來很奇怪。有沒有什麼方法可以使標籤的寬度與其所需的寬度相匹配?這樣一切都看起來像一個標籤(除了我讓中間標籤有更小的文字)。

+0

這不是故事板的默認UILabel行爲嗎?您可以爲此使用自動佈局。 –

回答

2

添加一個UIView,而不是堆棧視圖中3個標籤。 並設置約束如圖所示。

enter image description here

enter image description here

+0

我給堆棧視圖分配什麼? – MarksCode

+0

另外,如果第一個單詞比「編碼」更長或更短,該怎麼看起來很時髦? – MarksCode

+0

我在說不要使用堆棧視圖來代替使用UIView。 如果編碼是短文本,則會相應地進行調整。編輯答案。 –

0

你可以把一個標籤,而不是服用三個標籤 和並設置標籤上的文字

label.text= firstLabel.text + "with" + lastLabel.text 
+0

但是我可以讓「with」這個詞小於文本的其餘部分嗎? – MarksCode

+0

是的,你可以做到這一點,即在同一個UILabel中創建不同大小的文本。查看NSLocalizedString,然後做label.text = NSLocalizedString。 –

+0

嗯,我可能會最終用這個解決方案,然後 – MarksCode

1

如何使用自動佈局? 您可以在標籤和中間寬度的約束之間給出水平空間0。

1

如果妳希望有不同的字體在標籤內容,您可以使用NSAttributedString

let boldFontDict:[String: AnyObject] = [NSForegroundColorAttributeName : UIColor.black, NSFontAttributeName: <UI Font>] 

let 1stString = NSAttributedString(string: "Hello")  
let 2ndString = NSAttributedString(string: "hii", attributes: boldFOntDict) 

let finalAttrStr = NSMutableAttributedString(attributedString: 1stString) 

finalAttrStr.append(2ndString) 

myLabel.attributedText = finalAttrStr 
+0

做什麼?第一個字符串左對齊,第二個字符串居中,第三個字符串右對齊。你可以發佈解決方案實現嗎? –

+0

由於內容是動態的,因此難以管理3個標籤的寬度。 – Anuraj

+0

相反,你可以將你的'myLabel'對齊爲'居中對齊',並且可以給每個'屬性字符串賦予不同的字體大小。' –

0

您可以使用自動佈局來解決這個問題。