2016-09-20 5 views
0

私は以下のようなコードを使用してNSViewの内部でシンプルな四角形を描画しようとしています:OS X /ココア:透明窓の内側にNSViewの上での描画

self.shapeLayer = [CAShapeLayer layer]; 
    self.shapeLayer.lineWidth = 2.0; 
    self.shapeLayer.strokeColor = [[NSColor whiteColor] CGColor]; 
    self.shapeLayer.fillColor = [[NSColor blackColor] CGColor]; 
    [self.layer addSublayer:self.shapeLayer]; 
    CGMutablePathRef path = CGPathCreateMutable(); 
    CGPathMoveToPoint(path, NULL, 400, 400); 
    CGPathAddLineToPoint(path, NULL, 400, 600); 
    CGPathAddLineToPoint(path, NULL, 600, 600); 
    CGPathAddLineToPoint(path, NULL, 600, 400); 
    CGPathCloseSubpath(path); 

    // set the shape layer's path 
    self.shapeLayer.path = path; 

私もNSView drawRect:で何かを描くことを試みました。

どちらの場合もRectangleは描画されますが、ストローク/塗りつぶしのカラーセットではなく、アルファ0.5のような半透明なバージョンです!

backgroundColorがclearColorに設定され、不透明に設定されているNSWindowのNSViewにこのRectangleを描画しようとしました。 私はこの透明性に関連するものがあると思っていますので、背景色をgreenColorに、不透明にYESに変更しました。そして、私はまだ鮮やかな無地の色ではなく、半透明で描画された四角形を取得しています。 私は何が間違っていますか?

Inner Rectangle should be black! But it isn't.

答えて

0

OK問題が見つかりました。私が作成して削除した前のビューについて考えている追加のCore Animation Layerが追加されました。 次にInterface Builderでこのアニメーションレイヤーが選択されたままになっていますので、下の図のように選択を解除して正しく動作します。 enter image description here

関連する問題