1

イライラする問題に直面しています。文字列の一部の背景色が異なるテキスト文字列を表示するラベルが必要です。

このコードは機能します:

let s = NSMutableAttributedString(string: "test me bar", attributes: [:])
s.addAttribute(NSBackgroundColorAttributeName, value: UIColor.yellowColor(),
   range: NSMakeRange(4, 2))
s.addAttribute(NSBackgroundColorAttributeName, value: UIColor.blueColor(), 
   range: NSMakeRange(8, 2))

self.detailDescriptionLabel.attributedText = s

ここに画像の説明を入力

しかし、これらの呼び出しの 1 つだけを削除してaddAttribute(どちらでもかまいません)、文字列の 1 つの範囲だけを背景色属性に指定すると、文字列のどこにも背景色が表示されなくなります。

ここに画像の説明を入力

私は iOS 8.1 を使用していますが、これはシミュレーターと iPhone 6 で発生します。コードでこの問題を見つけ、空のプロジェクトで上記のスニペットのみを使用して再現しました。

何か案は?ここで髪を引っ張っています。これは問題の簡略化されたバージョンですが、私のプロジェクトでは、背景色が 1 つの領域だけである文字列を使用できることが重要です。

EDIT背景色の 1 つを に設定するUIColor.clearColor()と、すべてが期待どおりに機能します。おそらくUIKitのバグを見ているのでしょうか?

4

2 に答える 2

2

NSBackgroundColorAttributeNameまず、テキスト全体に透明色を適用する必要があります。

[s addAttribute:NSBackgroundColorAttributeName value:[UIColor clearColor] range:(NSRange){0, s.length}];

次に、強調表示するテキストの範囲で 2 番目の色を適用できます。

[s addAttribute:NSBackgroundColorAttributeName value:[UIColor yellowColor] range:(NSRange){0, 2}];

スイフトの場合:

mutableAttributedString.addAttribute(NSAttributedString.Key.backgroundColor, value: UIColor.clear , range: {0, 2})

mutableAttributedString.addAttribute(NSAttributedString.Key.backgroundColor, value: UIColor.yellow , range: {0, 2})
于 2015-02-07T04:17:09.963 に答える
0

これもあなたのバグ:

これを行うだけです:

self.detailDescriptionLabel.numberOfLines = 2; // <---

そして、あなたの問題は解決しました。

于 2015-02-07T04:21:01.060 に答える