Feb 20, 2008

レンダリングにWebKitを使う

コトノコのビュー画面にWebViewを使う事を考えてきましたが, うまく結合文字を表示させる事ができないので,コトノコの辞書内容表示としては使えません. 他の用途になら十分なのでしょうけどね.

ただ, HTML + NSURLProtocolの方が便利な事も多い訳で, どうするかなぁと考えていると, NSAttributeStringの initWithHTML: options: documentAttributes:は10.4からレンダリングにWebKitを使っているとの事.使ってみると, NSURLProtocolで定義した独自プロトコルも普通に呼んでくれます. NSTextViewにレンダリングしたテキストを流し込むと結合文字もちゃんと処理してくれています.結局これで行く事にしました.

使い方としては HTMLを用いてNSAttributetStringを初期化するだけ.独自のWebPreferencesを使いたい場合はoptionsに指定します.

スタイルシートもきちんと読み込まれますが, cacheをオフにしていてもなかなかreloadしてくれないので,HTMLのheadに流し込んでしまった方が良さそうです. 何か良い方法があるのかもしれませんが.

あくまでも生成されるのはも文字列なので, ブロック系のスタイルは無視されます.また, リンク文字列はNSTextViewに流し込んだ時に, linkTextAttributeが「追加」されます.この為, 色等はスタイルシートではなくTextViewに設定する必要があります.

a:hover系のスタイルシートは無視されます. また, 下線に関しては元々引かれているとそれを消す事はできないので,以下のスタイルを追加しておく必要があります.

No comments:

Post a Comment