組み込みのアドレスブックを含むいくつかのアプリは、半透明の HUD ウィンドウを使用し、大きな影付きのテキストを表示します。Cocoa Mac アプリに同様のウィンドウを実装したいと考えています。
この種のウィンドウの無料の実装はどこかにありますか?
そうでない場合、それを実装する最良の方法は何ですか?
これを行う方法を示すサンプル プロジェクトを次に示します。
http://github.com/NSGod/BlackBorderlessWindow
NSWindow
基本的に、ボーダレスサブクラスを作成する必要があります。これを行う最も簡単な方法は、nib ファイルでウィンドウのサイズと配置を設定し、そのクラスをカスタム サブクラスに設定することです。したがって、Interface Builder では通常のウィンドウのように見えますが、実行時には必要に応じて表示されます。
@implementation MDBorderlessWindow
- (id)initWithContentRect:(NSRect)contentRect
styleMask:(NSUInteger)windowStyle
backing:(NSBackingStoreType)bufferingType
defer:(BOOL)deferCreation {
if (self = [super initWithContentRect:contentRect
styleMask:NSBorderlessWindowMask
backing:NSBackingStoreBuffered defer:deferCreation]) {
[self setAlphaValue:0.75];
[self setOpaque:NO];
[self setExcludedFromWindowsMenu:NO];
}
return self;
}
アルファ値は、ウィンドウを半透明にします。
NSView
また、丸い長方形を描画するカスタム サブクラスを作成することもできます。
@implementation MDBlackTransparentView
- (id)initWithFrame:(NSRect)frame {
if (self = [super initWithFrame:frame]) {
}
return self;
}
- (void)drawRect:(NSRect)frame {
NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:frame
xRadius:6.0 yRadius:6.0];
[[NSColor blackColor] set];
[path fill];
}
@end
ウィンドウと同様に、ウィンドウの contentView のクラスをカスタムNSView
サブクラスに設定するだけです。(アウトライン ビュー モードを使用し、開閉用三角ボタンをクリックしてNSView
、nib ファイルのウィンドウのアイコン内にネストされたものを表示します)。繰り返しますが、View は Interface Builder では普通に見えますが、実行時には問題なく見えます。
次にNSTextField
、ビューの上に配置し、それに応じてテキストを設定します。
一般に、ボーダレス ウィンドウは扱いにくいことに注意してください (たとえば、ウィンドウをドラッグできるようにしたい場合は、その機能を自分で追加する必要があります)。たとえば、Apple には、ドラッグを許可する方法に関するサンプル コードがいくつかあります。
このコードを共有していただきありがとうございます。とても助かりました!次の行を追加できます...
[self setBackgroundColor:[NSColor clearColor]];
ウィンドウのinit関数に。これにより、白い角が削除されます。