問題タブ [nsmutableattributedstring]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - Swift で NSMutableAttributedString を使用して特定のテキストの色を変更する
私が抱えている問題は、TextView 内の特定のテキストの textColor を変更できるようにしたいということです。連結された文字列を使用していますが、TextView のテキストに追加する文字列が必要です。私が使いたいのはNSMutableAttributedString
のようですが、Swift でこれを使用する方法に関するリソースが見つかりません。私がこれまでに持っているものは次のようなものです:
ここから、textColor を変更する必要がある単語の範囲を見つけて、それらを属性付き文字列に追加する必要があることがわかります。私が知る必要があるのは、attributedString から正しい文字列を見つけて、textColor を変更する方法です。
評価が低すぎるので、自分の質問に答えることはできませんが、ここに私が見つけた答えがあります
からいくつかのコードを翻訳することで、自分の答えを見つけました
NSAttributedString の部分文字列の属性を変更する
Swift での実装例を次に示します。
複数の文字列の textColor を変更したいので、これを処理するヘルパー関数を作成しますが、これは textColor を変更するために機能します。
ios - 同じ NSAttributedStrings の 2 つの比較が機能しない
同じものを比較してもうまくいかないのはなぜNSAttributedString
ですか?
私は次のものを持っています:
ios - NSLinkAttributeName のフォント色の設定
簡単なものが欠けているように感じますが、これを行う方法がわかりません。
次のように属性をリンクに設定します。
それは機能しますが、リンクは青で、色を変更できないようです。これにより、リンク以外のすべてが白に設定されます。
リンクに固有の、見つけられないように見える別の色属性名はありますか?
swift - Swift を使用して NSAttributedString を NSString に変換する
私は を持っていて、NSMutableAttributedString
それを単純な に戻したいと思っていString
ます。
どうすれば最も簡単な方法から抜け出すことができString
ますNSMutableAttributedString
か?
ios - SwiftでNSUnderlineStyle.PatternDashをNSAttributedStringに追加しますか?
Swift アプリのテキストに下線を追加しようとしています。これは私が現在持っているコードです:
しかし、次のエラーが表示されますtext.addAttributes
。
NSString
と同一ではありませんNSObject
列挙型に含まれる属性を Swift の NSMutableAttributedString に追加するにはどうすればよいですか?
ios - Swift で NSMutableAttributedString の kCTUnderlineStyleAttributeName を設定する
kCTUnderlineStyleAttributeName のドキュメントは、次を中継します。
kCTUnderlineStyleAttributeName この属性が適用されるテキストに対して、レンダリング時に適用される下線のスタイル。値は CFNumber オブジェクトでなければなりません。デフォルトは kCTUnderlineStyleNone です。下線を描画するには、kCTUnderlineStyleNone 以外の値を設定します。さらに、CTUnderlineStyleModifiers にリストされている定数を使用して、下線の外観を変更できます。下線の色は、テキストの前景色によって決まります。
setAttributes 関数のシグネチャは次のとおりです。
私が抱えている問題は、ドキュメントがCTUnderlineStyle.Single をkCTUnderlineStyleAttributeNameキーの値として使用できる (Swift では使用する必要がある)という事実をほのめかしているように見えることです。ただし、前者は構造体であるため、辞書の値の型で必要な AnyObject プロトコルに準拠していません。
何か案は?
ios - NSMutableAttributedString は、ゼロ以外のインデックスで始まる属性を表示しません
アップデート:
バグを示すために、非常に単純なスタンドアロン プロジェクトを作成しました。誰かが同じことを引っ張って、私が間違っていた場所を見つけられるかどうかを確認したい場合は、それを感謝します. 調べるコードはあまりありません。ここの公開リポジトリ: https://github.com/reidnez/NSAttributedStringBugDemo
ここで非常に奇妙な問題が発生しています。テーブルビューがあります。各セルには、1 ~ 3 語のタイトルラベルと、複数の CSV キーワードを含むキーワードラベルがあります。検索バーもあります。要件は、ユーザーが検索バーに入力すると、各セルのタイトルとキーワードの両方で部分一致が強調表示されることです。スクリーンショット:
最初の画像はA-OKです。2 番目の画像では、タイトル ラベルの「an」が強調表示されている必要があります。しかし、ご覧のとおり、それほど多くはありません...
上記のように、これは「キーワード」ラベルで完全に機能します。これら両方のラベルの属性文字列は、私が書いたカテゴリによって作成されます (以下のコード)。同じメソッドが両方の文字列で呼び出され、デバッガーが私に伝えていることから、同じように動作するように見えます。UI は別の話をします。
デバッガーを何度も実行しましたが、いずれの場合も、属性付きの文字列は正しく構成されているようです。また、他の何かが呼び出さ[tableView reloadData]
れていないこと、およびコード内の他の場所でラベルの値が上書きされていないことも確認しました。これは、セルが の最後に返される直前に、"Fang" の "an" でのマッチングがデバッガーでどのように見えるかを示していますcellForRowAtIndexPath
。
私には良さそうです...それはまさに私が欲しいものです。しかし、セルがレンダリングされると、見られるハイライトはありません! さらに奇妙なことに、実験として、cellForRow で作成した完全に任意の attributedString にラベルを設定してみました。
これも失敗。強調表示はまったくありません...しかし、{0, 1} から {0, fake.length} の範囲の部分文字列を強調表示でき、期待どおりに動作します。繰り返しますが、インデックス 0 で始まらない部分文字列を強調表示することを拒否しているように見えますが、タイトル ラベルのみです。
私は私の心を失っていますか?私は何が欠けていますか?
以下は私のカテゴリです...しかし、キーワード文字列に対して完全に機能し、セルが戻る直前に属性が正しく設定されているように見えるため、問題はここにないと確信しています。