我有一個多行UILabel,另一個標籤應該在第一行結束後立即開始。如何左下角將視圖與多行UILabel的文本對齊
正如你所看到的,用「39秒」對準消息標籤的左邊和基線的第二個標籤。
這也是很好,但是當消息標籤需要兩條線,但第二行比第一短出現問題。這是我遇到麻煩的照片:
所以我需要弄清楚如何將第二個標籤(帶有時間的標籤)對齊到第一個文本結束的位置。有沒有已知的方法可以做到這一點,還是有不同的解決方案,我不知道?
我有一個多行UILabel,另一個標籤應該在第一行結束後立即開始。如何左下角將視圖與多行UILabel的文本對齊
正如你所看到的,用「39秒」對準消息標籤的左邊和基線的第二個標籤。
這也是很好,但是當消息標籤需要兩條線,但第二行比第一短出現問題。這是我遇到麻煩的照片:
所以我需要弄清楚如何將第二個標籤(帶有時間的標籤)對齊到第一個文本結束的位置。有沒有已知的方法可以做到這一點,還是有不同的解決方案,我不知道?
而不是使用兩個不同的標籤,我會使用字符串連接,並使用相同的標籤,並結合兩個不同的字符串。例如,
let sampleText = "Hey this is a test..." + " " + "1 sec"
如果您擔心每行文本的不同字體,可以使用屬性文本自定義。
查看我的問題中的第二張圖片,您將如何知道何時切斷第一個標籤?你不能截斷標籤的尾部,因爲那會摧毀「1秒」部分。所以如果第一個字符串很長,我該怎麼做才能知道何時用「...」替換文本? – LulzCow
您可以設置字符限制。在x個字符後,第一個字符串會被截斷,然後您可以在該字符串的末尾追加「1秒」。 我覺得你的問題與這個相似嗎? http://stackoverflow.com/questions/37409260/uilabel-text-truncation-vs-line-breaks-in-text –
是的,我認爲這基本上是一樣的問題。字符數限制會使它有點不一致,但它可能是最接近我想要的最簡單的方法 – LulzCow
我覺得在這種情況下你不需要2個標籤。
如果您希望部分標籤文本具有不同的字體,則應使用NSAttributedString
並設置label.attributedText
屬性。
但是,您將不得不處理截斷的尾部情況。
也許設置lineBreakMode
到.byTruncatingMiddle
會適合你嗎?
如果不是,則必須計算給定字體的字符串大小,將寬度約束設置爲less或equal,並手動截斷文本。
可能有用的資源:
How to calculate the width of a text string of a specific font and font-size?
你的UI,似乎正好是做什麼它應該。對於多行標籤,寬度取決於最長行的長度。考慮以下幾點:
注意如何在第一線,「這是」決定了標籤,以便任何你對準這不一定會對齊到最後一行的寬度。解決這個
一種辦法是設置第二標籤的內容與程序一致的間距的第一一部分。因此,在您的視圖控制器中,執行如下操作:
self.firstLabel.text = [NSString stringWithFormat:@"%@ %@",firstContent,secondContent];
只需確定代碼中的間距即可。我知道這是Objective-C,但你得到了漂移。如果要爲兩個文本保留不同的屬性,也可以使用屬性文本屬性。
我很困惑我將如何處理截斷第一個字符串,仍然允許第二個總是出現。我不能截斷標籤的尾部,我可以在技術上截斷中間,但看起來很糟糕。你知道如果我可以確定用「...」替換第一個字符串的末尾,如果它的寬度太大了嗎? – LulzCow
你在兩個標籤之間設置了什麼限制? – Paulw11
@ Paulw11時間標籤與消息標籤的基線對齊並且4px前導 – LulzCow