Day: February 1, 2016

Swift:検索と文字の背景色の設定

検索結果は検索キーワードに背景色をつけることで一目瞭然になる仕様としました。

検索機能もNSAttributedStringもすでに開発済みだったので、検索の実装は比較的早く終了しました。

ひとつだけメモっておきたいことは、NSMutableAttributedStringについてです。どうということではないのですが、Stringの場合、A+B+Cのような連結が可能です。NSAttributedStringの場合、これができないようなので、NSMutableAttributedStringを定義し、appendAttributedStringで追加していけば同じような結果が得られます。

検索結果に背景色NSBackgroundColorAttributeNameをつけました。これをどのタイミングでクリアすればいいか、予め非常に気になっていたのですが、表示後にクリアするという考えでなく、検索をはじめる前にフォーマティング(viewを作成)すれば、結果的に同じ効果が得られることがわかりました。検索でヒットした用語はマゼンタで白黒反転させることにしました。

Screenshot 2016-02-01 21.29.01

あとは総合テスト、マニュアル作り、App Storeへの登録と進めることにします。あっ、アプリアイコンを作っていなかったのでまずこれからですね。2月末まで登録できればいいので、今回はあくせくしないですみます。

最優先事項は、確定申告の手続き準備ですので、向こう二週間の開発はスローペースになります。

Swift:カラムサイズの計算ができました!

テキストとフォントサイズからカラムサイズを計算することができました。

結論は、前に書いたNSAttributedStringに次の2行足すだけでした(ここでは、3行にしていますけれど)。返り値は、CGFloatでテキストの描画サイズを返します。

let wConstraintsSize = CGSizeMake(CGFloat.max, CGFloat.max)
let textSize = pString.boundingRectWithSize(wConstraintsSize,
     options:NSStringDrawingOptions.UsesLineFragmentOrigin, attributes:wAttribute, context:nil)

Screenshot 2016-01-31 23.43.50

これで残る機能追加は検索だけになりました。

参考:

追記:朝方、検索について調べました。文字列から指定された用語を検索するメソッドはすでに書いていることがわかりました。すっかり忘れていました。このあと、どう実装するかですが、対象用語の背景を色付けすればいいことに気づきました。背景色色付けは、NSAttributedStringを拡張すればいいのではないかと思っています。あとはリセットの仕方。次の新しいアクションが起きたときにリセットできれば、変なボタンを追加しないですみます。この点はもう少し考える必要がありそうです。