編集-これは重複としてマークされていますが、以下に述べるように、Swiftソリューションを探しています。私が見つけたものはすべてObjective Cで書かれています。
HTMLをNSAttributedStringに変換しようとしていますが、フォントのスタイルとサイズを設定する方法がわかりません。すべての例はObjective Cにありますが、これは私には不慣れです。フォントスタイル/サイズをSystem 15に設定するにはどうすればよいですか(例として)
private func stringFromHtml(string: String) -> NSAttributedString? {
do {
let data = string.data(using: String.Encoding.utf8, allowLossyConversion: true)
if let d = data {
let str = try NSAttributedString(data: d,
options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], documentAttributes: nil)
return str
}
} catch {
}
return nil
}
編集......私はいくつかの方法を試しました。私はそれを動作させることができません。エラーメッセージが表示されるようになりました。式のタイプは、コンテキストがなくあいまいです。 NSAttributedStringを指しているので、次のことを試しました。
let myAttribute = [ NSForegroundColorAttributeName: UIColor.blue ]
let data = string.data(using: String.Encoding.utf8, allowLossyConversion: true)
if let d = data {
let str = try NSAttributedString(data: d,
attributes: myAttribute,
options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], documentAttributes: nil)
let myString = "Swift Attributed String"
let myAttribute = [ NSForegroundColorAttributeName: UIColor.blue ]
let myAttrString = NSAttributedString(string: myString, attributes: myAttribute)
// set attributed text on a UILabel
myLabel.attributedText = myAttrString
フォント
let myAttribute = [ NSFontAttributeName: UIFont(name: "Chalkduster", size: 18.0)! ]
シャドウ
let myShadow = NSShadow()
myShadow.shadowBlurRadius = 3
myShadow.shadowOffset = CGSize(width: 3, height: 3)
myShadow.shadowColor = UIColor.gray
let myAttribute = [ NSShadowAttributeName: myShadow ]
下線
let myAttribute = [ NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue ]
テキストカラー
let myAttribute = [ NSForegroundColorAttributeName: UIColor.blue ]
背景色
let myAttribute = [ NSBackgroundColorAttributeName: UIColor.yellow ]
Swift 4次を使用できます。
let stringWithAttribute = NSAttributedString(string: selectedFilter ?? "",
attributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 14.0)])
最初にデータを文字列に変換してから、このコードを使用する必要があります
let attributes = [
NSForegroundColorAttributeName: UIColor.black,
]
try NSAttributedString(string: "", attributes: attributes)
var attrString = NSAttributedString(string: "labelText", attributes: [NSForegroundColorAttributeName: UIColor.red, NSFontAttributeName: UIFont(name: "system", size: 12)])
label.attributedText = attrString
この方法で設定できます
let attribute: [String : Any] = [NSFontAttributeName: UIFont.systemFont(ofSize: UIFont.systemFontSize, weight: UIFontWeightThin),
NSForegroundColorAttributeName: UIColor.red]
let attributedText = NSAttributedString(string: "Your String", attributes: attribute)