SEARCH THIS BLOG
CATEGORIES
ARCHIVES
RECOMMENDED OS X APP

Desktop Calendar Plus
App

Textastic
App

Tap Forms Organizer 5 + Secure Database
App

OmniFocus 2
App

RECOMMENDED iPad APP

GitMongo
App


RECOMMENDED UNIVERSAL APP

Textastic Code Editor 6
App

OmniFocus 2
App

iTeleport VNC AND RDP
App


Tap Forms Organizer 5 + Secure Database
App

LINKS

NSViewの残像

透明ウインドウなどを作る時は IB 使わずにコード内で生成するのですが、プロトタイプを作る時などは手を抜いて IB のウインドウをそのまま使う事もあります。
その時に NSWindow のクラスにサブクラスを指定して

initWithContentRect:styleMask:backing:defer:

をオーバーライドして初期設定をしますが、透明ウインドウの場合、シャドウは殆どの場合要らないので、

[self setHasShadow:NO];

で影を消してやります。

この時に気をつけたいのが、コード内で生成した NSWindow だとこれで良いのですが、IBを使った場合は init 時にはまだ Nib ファイルは読み込まれていません。
なので、コンテントビューで文字などを書いた場合に、残像が残ってしまいます。

20120712 001

これはたまーに遭遇して、あれー?なんだったっけかなー?と NSView の方を疑ったりしますが、NSWindow 側の設定の問題です。
上書きされるので当たり前ですねー。でも忘れちゃう・・・

これを回避するには、awakeFromNib で影を消すか、IB で shadow のチェックを外します。

20120712 002

| Cocoa, Objective-C, Programming | Permalink | コメント (0) | Trackback(0) |
 
TRACKBACK
このエントリーのトラックバックURL:
http://hyslog.com/blog/2012/07/12/826/trackback

コメントはお気軽にどうぞ



« | メイン | »