最新回復
- 5月前1 #
- 5月前2 #
从ios 6開始,您可以在UILabel中設置屬性字元串:
NSString *labelText = @"some text"; NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:labelText]; NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; [paragraphStyle setLineSpacing:40]; [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [labelText length])]; cell.label.attributedText = attributedString ;
- 5月前3 #
您可以在情节提要中控製行間距:
重複問题
- 5月前4 #
From Interface Builder:
Programmatically:
SWift 4
使用標簽擴充套件名
extension UILabel { func setLineSpacing(lineSpacing: CGFloat = 0.0, lineHeightMultiple: CGFloat = 0.0) { guard let labelText = self.text else { return } let paragraphStyle = NSMutableParagraphStyle() paragraphStyle.lineSpacing = lineSpacing paragraphStyle.lineHeightMultiple = lineHeightMultiple let attributedString:NSMutableAttributedString if let labelattributedText = self.attributedText { attributedString = NSMutableAttributedString(attributedString: labelattributedText) } else { attributedString = NSMutableAttributedString(string: labelText) } // Line spacing attribute attributedString.addAttribute(NSAttributedStringKey.paragraphStyle, value:paragraphStyle, range:NSMakeRange(0, attributedString.length)) self.attributedText = attributedString } }
現在的附加電话資訊功能
let label = UILabel() let stringValue = "How to\ncontrol\nthe\nline spacing\nin UILabel" // Pass value for any one argument - lineSpacing or lineHeightMultiple label.setLineSpacing(lineSpacing: 2.0) . // try values 1.0 to 5.0 // or try lineHeightMultiple //label.setLineSpacing(lineHeightMultiple = 2.0) // try values 0.5 to 2.0
或使用標簽例項(只需複製並執行此代碼即可查看結果)let label = UILabel() let stringValue = "Set\nUILabel\nline\nspacing" let attrString = NSMutableAttributedString(string: stringValue) var style = NSMutableParagraphStyle() style.lineSpacing = 24 // change line spacing between paragraph like 36 or 48 style.minimumLineHeight = 20 // change line spacing between each line like 30 or 40 // Line spacing attribute attrString.addAttribute(NSAttributedStringKey.paragraphStyle, value: style, range: NSRange(location: 0, length: stringValue.characters.count)) // Character spacing attribute attrString.addAttribute(NSAttributedStringKey.kern, value: 2, range: NSMakeRange(0, attrString.length)) label.attributedText = attrString
Swift 3
let label = UILabel() let stringValue = "Set\nUILabel\nline\nspacing" let attrString = NSMutableAttributedString(string: stringValue) var style = NSMutableParagraphStyle() style.lineSpacing = 24 // change line spacing between paragraph like 36 or 48 style.minimumLineHeight = 20 // change line spacing between each line like 30 or 40 attrString.addAttribute(NSParagraphStyleAttributeName, value: style, range: NSRange(location: 0, length: stringValue.characters.count)) label.attributedText = attrString
- 5月前5 #
我的解決方案是修補字型檔案本身並確定其行高。 http://mbauman.net/geek/2009/03/15/minor-truetype-font-editing-on-a-mac/
我必须在" hhea"塊中修改" lineGap"," ascender"," descender"(如博客示例中所示)。
相似問題
- iphone:如何在iOS的MKAnnotation中添加更多详细資訊iphoneobjectiveciosmkannotation2021-01-12 01:29
- objective c:iOS:一般从NSObject類序列化/反序列化複雜的JSONiosobjectivecjsongenericsjsonkit2021-01-10 17:56
- 如何使用目標C在iOS本地下載和儲存檔案?objectiveciosdownloadwgetlocalstorage2021-01-09 21:27
- iphone:iOS應用程式Display Recorder如何在不使用私有API的情况下記錄螢幕?iphoneobjectivecios2021-01-09 22:31
- ios:仪器分配跟蹤使用者定義類的物件的分配和取消分配iosobjectivecxcodeinstruments2021-01-10 04:56
Edit: 顯然是
NSAttributedString
將在iOS 6及更高版本上執行此操作.而不是使用NSString
設置標簽的文字,建立一个NSAttributedString
,在其上設置屬性,然後將其設置為.attributedText
在標簽上.您想要的代碼將如下所示:NSAttributedString的旧attributedStringwithString做同樣的事情,但是現在已被棄用。
出於歷史原因,這是我的原始答案:
Short answer: 你不能.要更改文字行之間的間距,您必须將
UILabel
子類化 並滚動自己的drawTextInRect
,建立多个標簽或使用其他字型(可能是针對特定的行高进行了編輯,請參见Phillipe的答案)。Long answer: 在印刷和線上世界中,文字行之間的間隔被稱為"前匯"(帶有"標题"的押韵,来自几十年前使用的铅金屬). Leading是
UIFont
的只讀屬性 ,在4.0中已棄用,並由lineHeight
取代 .据我所知,無法用一組特定的引數(例如lineHeight
)建立字型 ; 您可以获得系統字型和添加的任何自定義字型,但是一旦安裝就無法對其进行調整。UILabel
中没有間距引數 ,或者。我對
UILabel
並不特別满意 的行為不變,因此建議您編寫自己的子類或使用3rd-party庫.這將使行為独立於您的字型選擇,並成為最可重用的解決方案。我希望在
UILabel
中有更大的靈活性 ,很高兴被證明是錯誤的!