Subscribed unsubscribe Subscribe Subscribe

NicoNicoDesktop 改良メモ

Objective-C Mac

http://github.com/sugyan/NicoNicoDesktop/commit/7d0d7a5a1bda29588b177fdac09250eb91174ea3#diff-0
表示させる文字列の長さに応じてNSWindowの大きさを調整したいなーと思ったもののやり方がよくわからなくて困っていたのだけど、どうやら以下の方法でサイズが取れるらしい。ヒントくださった@さん、ありがとうございます!

    NSFont       *font       = [NSFont systemFontOfSize:20.0];
    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:font, NSFontAttributeName, nil];
    NSSize       strSize     = [str sizeWithAttributes:attributes];

指定したフォントにおける、ある文字列のサイズ。
ただ、このサイズそのままでNSWindowつくってNSText貼り付けると微妙に足りないらしく、変に切れてしまったり改行されたりしてしまう。このへんはNSWindowとの兼ね合いなのかなー? よくわからず。


あとNSViewAnimationに対して

    [animation setAnimationBlockingMode:NSAnimationNonblocking];

と設定してみた。ノンブロッキングで動いてくれるらしい。あまり違いは分からなかった。さらにNSAnimationNonblockingThreadedというのもあって、それぞれ別threadで処理してくれるようになるみたいなのだけど、試してみたらアニメーションのコマごとに右端に変な線が出てしまって残念なかんじになってしまった。描画のthreadとうまく調整できていないから…?


あとは

  • TCPサーバー立ち上げ時(アプリケーション起動時)に毎回ダイアログでるのをどうにかしたい
  • dockに表示されないように メニューバーにだけ表示されるようにする
  • 表示サイズ、流れる速度、流れる領域、テキストの色 など設定で変更できるように

とかやれば意外とけっこうつかえるアプリになるのではないだろうか

追記

TCPコネクションの受け入れ許可はSystem PreferencesのSecurityの項目で許可しておくことで回避可。

dockに表示されないようにするには、info.plistで

<key>LSUIElement</key>
<true/>

と書けば良いらしい。
ステータスバーでのアイコンのみあらわれるようにできた。
http://github.com/sugyan/NicoNicoDesktop/commit/c661e8aca3046cffb6faa8b7beaa94b9a7473529