NSAttributedStringを使用して、ユーザーの検索の一致するクエリで文字列の一部をハイライトすることを計画していました。しかし、NSBackgroundColorAttributeName
のiOSに相当するものは見つかりません。kCTBackgroundColorAttributeName
はありません。このようなことは、のように存在しますか?kCTForegroundColorAttributeName
?iOSのNSAttributedStringのNSBackgroundColorAttributeNameのような属性ですか?
答えて
このような属性はコアテキストには存在しません。テキストの下に独自の矩形を描いてシミュレーションする必要があります。
基本的には、文字列内の特定の範囲を満たす矩形を特定する必要があります。 CTFramesetter
でCTFrame
というレイアウトを使用する場合は、その行とその起点をCTFrameGetLines
とCTFrameGetLineOrigins
で取得する必要があります。
次に、行全体を繰り返し、CTLineGetStringRange
を使用して、ハイライトしたい範囲に含まれる行を見つけます。長方形を塗りつぶすには、CTLineGetTypographicBounds
(高さの場合)とCTLineGetOffsetForStringIndex
(横のオフセットと幅の場合)を使用します。
素晴らしい答え。シンプルな属性は、すべてのコードを置き換えることではありません。 – kevboh
私のDTCoreTextプロジェクトは、Mac上で動作するのと同じ方法で強調表示をサポートしています。フォームHTMLを属性付き文字列に変換するNSAttributedString initWithHTMLDataメソッドと、CATextLayerよりも多くの追加機能を持つ属性付き文字列を適切に表示するビュークラスがあります。 – Cocoanetics
NSBackgroundColorAttributeNameは、iOS 6で利用可能です、あなたは以下の方法でそれを使用することができます:* CTFrameDrawのためのiOS 6
でサポートされているAttributeNames()が
[_attributedText addAttribute: NSBackgroundColorAttributeName value:[UIColor yellowColor] range:textRange];
[_attributedText drawInRect:rect];
drawInRect:
がNSBackgroundColorAttributeName、すべてのNSをサポートします背景テキストの色をサポートしていません。
コード:
- (void)drawRect:(CGRect)rect {
// First draw selection/marked text, then draw text
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CGContextSetTextMatrix(context, CGAffineTransformIdentity);
CGContextTranslateCTM(context, 0, self.bounds.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
[_attributedText drawInRect:rect];
CGContextRestoreGState(context);
// CTFrameDraw(_frame, UIGraphicsGetCurrentContext());
}
更新いただきありがとうございます! – kevboh
- 1. md-nav-itemの属性md-nav-srefはどのような属性ですか?
- 2. NSAttributedString内のテキストに「非表示」属性を設定するにはどうすればよいですか?
- 3. NSAttributedString - テキストの背景色に使用する属性は何ですか?
- 4. NSAttributedstringの異なる部分に異なる属性を適用する
- 5. iOSウェブフォームの属性
- 6. 目的C - NSAttributedString属性を拡張しますか?
- 7. NSAttributedStringから属性ディクショナリを取得する
- 8. 目的C - NSAttributedStringのすべての属性を変更しますか?
- 9. NSAttributedString iOSのシャドウとストローク?
- 10. MVC ActionFilterのようなWCFの属性
- 11. すべてのNSAttributedString属性の有効範囲を読み取る
- 12. ビューのタップ位置の下にあるNSAttributedStringの属性を見つける
- 13. iOS 5.0.1でデータをパージしないようにするファイル属性?
- 14. macOSに `#![windows_subsystem(windows)]`のような属性がありますか?
- 15. JavaにはC#のような属性がありますか?
- 16. Android:どのように取るかテキストなしのクラス属性
- 17. RSpec - 1つの属性が別の属性よりも少ないかどうかをテストするには
- 18. 属性の文字列値はどのようにメッセージのようですか?
- 19. どのようにNSAttributedStringの_outside_をストロークしますか?
- 20. ストーリーボードの警告:iOS 8.0より前の最初のベースラインレイアウト属性
- 21. 解析は、同じ名前の属性が、次のようにiOSの
- 22. はどのように、のcreated_at属性
- 23. モデル内の別の仮想属性の属性をどのように上書きできますか?
- 24. どのように私はmagento 2の属性値から属性ラベルを取得できますか?
- 25. NSAttributedStringを使用して複数のフォント属性を設定することは可能ですか
- 26. SeekBarのようなコントロールのデータバインディング属性を追加する
- 27. どのようにキー属性を設定できますか?
- 28. iOSのNSAttributedStringからHTML文字列を取得する方法
- 29. GridViewにコードビハインドで属性を追加できますか?そのような
- 30. どのようなhtml/css属性でメールが安全ですか?
これはNSAttributedStringがCoreText Iドンにレイアウトされ、残念ながらので、http://stackoverflow.com/questions/5424003/changing-background-color-on-nsattributedstring –
おかげで、場合に役立ちます参照してください。私が背景色を変えることができるビューがあるとは思わない。 – kevboh
@kevboh私はHighlightLabel(http://github.com/dineshrajas/HighlightLabel)を書いています。あなたがまだそれを必要としたい場合は、先に進んでください。 –