0

NSView のブロック サブクラスのいくつかのブロックを含む NSView のテーブル サブクラスがあります。これは、Table の drawRect: メソッドのコードです。

- (void)drawRect:(NSRect)dirtyRect
{
    [NSGraphicsContext saveGraphicsState];
    [[[NSColor whiteColor] colorWithAlphaComponent:0.6] set];
    [NSBezierPath fillRect:dirtyRect];
    [NSGraphicsContext restoreGraphicsState];
}

そして、これはブロックの drawRect: メソッドのコードです:

-(void)drawRect:(NSRect)dirtyRect
{
    [NSGraphicsContext saveGraphicsState];
    [color set];
    [NSBezierPath fillRect:dirtyRect];
    [NSGraphicsContext restoreGraphicsState];
}

ここで、「色」は [[NSColor whiteColor] colorWithAlphaComponent:0] に設定されます。

しかし、私がアプリケーションを実行すると、すべてが問題ないのに、ブロックをクリックするたびに、Mac OS X の古典的な灰色の初期背景で埋め尽くされる理由がわかりません... 誰か助けてもらえますか? 私はとてもうれしいです、ありがとう。

4

1 に答える 1

0

Block の drawRect 呼び出しを " colorWithAlphaComponent" から " 1.0" に変更すれば、準備は整ったと思います。

ゼロのアルファは透明な不透明度を意味します。Apple の「カラー プログラミング トピックス」ドキュメントを確認すると、「アルファ」について何度か言及されていることがわかります。

ps 従来の Objective C のブロックを考えている人を混乱させる可能性があるため、"Block" のクラス名を変更することをお勧めします ^ { }。

于 2012-11-03T20:23:07.020 に答える