簡體   English   中英

帶有選項卡的NSAttributedString

[英]NSAttributedString with tabs

如何使用這種文本格式創建UILabel 你會使用NSAttributedString嗎?

在此輸入圖像描述

NSAttributedString可以創建帶制表位的文本列。 這與在具有相同限制的文字處理器中完成的方式類似。

let text = "Name\t: Johny\nGender\t: Male\nAge\t: 25\nFavourites\t: Reading, writing"

let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.tabStops = [NSTextTab(textAlignment: NSTextAlignment.Left, location: 150, options: [:])]
paragraphStyle.headIndent = 150

label.attributedText = NSAttributedString(string: text, attributes: [NSParagraphStyleAttributeName: paragraphStyle])

標簽呈現以上屬性字符串的屏幕截圖

tabStops提供每個選項卡后繼續文本的位置的點位置。 在這里,我們在第一列之后的合理點處做了一個選項卡。 headIndent告訴標簽,包裝文本需要縮進固定數量,因此它將換行到下一行。

這種方法的局限性是:

  1. 制表位置是固定點值,因此您需要知道自己想要什么。 如果您選擇的值小於某些行的第一列的寬度,則這些行將縮進到其他位置。
  2. 只有當您的最后一列是包裝的列時,才能真正包裝。 由於您的第二列以“:”開頭,您可能想要增加headIndent或者將“:”拆分為\\t:\\t並設置第二個制表位。 如果你不讓文本換行,這不是問題。

如果這些限制過於嚴格,您可以將標簽重組為具有自動布局約束的多個標簽的集合。

在Swift 4.2或更高版本中

let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.tabStops = [NSTextTab.init(textAlignment: .left, location: 150, options: [:])]
paragraphStyle.headIndent = 150

let attributedTitle = NSAttributedString(string: "Some Title", attributes: [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 14.0), NSAttributedString.Key.paragraphStyle: paragraphStyle])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM