web-dev-qa-db-ja.com

UILabelのNSAttributedStringテールトランケーション

ContextLabel を使用して、@、#、およびURLを解析しています。これは私が見つけた最良のソリューションです。サイズが正しく、パフォーマンスには影響しません。最初に入力で文字列を解析し、それをNSAttributedStringに変換してから、attributedTextUILabelプロパティに割り当てます。尾の切り捨てを除いて、すべてが期待どおりに機能します-非常に不正確です(下の写真を参照)

enter image description here

どこから掘り始めますか-属性付き文字列の属性は間違っていますか?またはラベルのレイアウトの問題?ありがとう!

25
Nikita Pronchik

私はこの問題を抱えており、目的の改行モードを指定するNSParagraphStyleを追加することで修正しました。

    //assuming myString is an NSMutableAttributedString
    let paragraphStyle = NSMutableParagraphStyle()
    paragraphStyle.lineBreakMode = .byTruncatingTail

    let range = NSRange(location: 0, length: myString.mutableString.length)
    myString.addAttribute(NSParagraphStyleAttributeName, value: paragraphStyle, range: range)

詳細については、 NSMutableAttributedStringのワードラップ を参照してください。

50
Jon Brooks

以下は、AttributedTextまたは通常のテキストの使用に関係なく機能します。
AttributedTextとフォントをラベルに設定した後、以下の行を必ず追加してください:

label.lineBreakMode = .byTruncatingTail
11
Nishitha