問題タブ [nsshadow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
683 参照

objective-c - NSImage -lockFocusFlipped の奇妙な問題:

NSImageのメソッドを使用-lockFocusFlipped:して、画像に描画しています。私のコードは次のようになります。

このコードは、特定のポイントまで機能します。[[NSGraphicsContext currentContext] isFlipped]を返すYESため、またshapeRectが正しい位置に描画されるため (左上隅を原点として使用) 、コンテキストが実際に反転されていることを確認できます。とNSShadowはいえ、コンテキストの反転状態を尊重していないようです。シャドウ オフセットを に設定すると、コンテキストが反転したとき(0, 3)にシャドウが下に移動するはずですが、実際には上に移動します(これは、標準の非反転コンテキストで発生することです)。

この問題は に固有のよう-lockFocusFlippedです。この同じコードを使用CALayerして反転した座標系に描画すると、影がうまく描画されるためです (反転を考慮して)。のドキュメント-lockFocusFlippedも非常に曖昧なようです。これは、NSImageクラスのドキュメントに記載されているすべてです。

指定された反転状態を使用して描画コマンドを受け取るようにイメージを準備します。

また、Snow Leopard AppKit リリース ノートにも次のメモがありました。

たとえば、NSLayoutManager を介して直接描画する場合など、反転したコンテキストが必要になる場合があります。このケースをカバーするために、追加します

- (void)lockFocusFlipped:(BOOL)flipped;

これは画像自体の状態を変更せず、フォーカスがロックされているコンテキストのみを変更します。ロックされたコンテキストでは、(0,0) が左上にあり、Y 軸に沿った正が下にあることを意味します。

NSShadowこの場合、どのドキュメントも の動作を説明していないようです。さらにテストを重ねた結果、いずれかNSGradientで使用される描画コンテキストの反転状態を尊重していないようですNSImage

どんな洞察も大歓迎です:-)

0 投票する
1 に答える
398 参照

cocoa - デスクトップでの NSShadow と紙のカール効果

私はこのブログのソースコードで遊んでいました: http://nachbaur.com/blog/fun-shadow-effects-using-custom-calayer-shadowpaths

紙のカール効果を影で再現したかったからです。しかし、CALayer のプロパティ shadowPath は、OSX では使用できず、iPhone でのみ使用できるようです。

そのような効果を達成するための別の方法を提案できる人はいますか?

よろしくお願いします

0 投票する
2 に答える
10347 参照

objective-c - 丸みを帯びた角とドロップ シャドウを備えたカスタム NSView

丸みを帯びた角とドロップ シャドウの両方を持つカスタム NSView を作成しようとしています。私は NSView サブクラスを作成し、次の drawRect: メソッドを持っています。

結果は、丸みを帯びた角で描画された NSView ですが、影はありません (ただし、アンチエイリアシングで角の周りに赤い色が見えます)。NSBezierPath をコメントアウトすると、影のある正方形の NSView が得られます。NSShadow と NSBezierPath が相互に排他的であることを示唆するドキュメントは見当たりませんでした。そのため、明らかに何かが欠けています。

どんなアイデアでも大歓迎です!

0 投票する
1 に答える
1529 参照

cocoa - -setClip メソッドを使用して、カスタム ビューの挿入 NSShadow を再描画

この質問の答えに関連して、私は奇妙な問題を抱えています:

Inset NSShadow と Inset Stroke を描画する

このコードをカスタム ビューの drawRect メソッドで使用します。私はまさにこれを持っています:

マルチライン ラベル (カスタム ビューの兄弟または子) を追加すると問題が発生します。

プログラム ウィンドウがフォーカスを失って戻ってくると、内側の影/ストロークが暗くなります。影が重なっているように見えます。私のウィンドウにこのカスタムビューしかない場合、それはうまくいくので、それは奇妙です。

行にコメントすると

影はもう重ねられませんが、丸みを帯びたコーナーの望ましい効果は得られません (NSBox と同様)。

マルチラインラベルの代わりにプッシュボタンで何が起こるか試してみました.ウィンドウのフォーカスを失ったり取得したりすることで問題はありませんが、ボタンをクリックすると影が重なってしまいます.

問題はここと似ていますが、Java ではなく Cocoa にあります。

Java setClip が再描画されるようです

ご協力いただきありがとうございます!

0 投票する
1 に答える
3986 参照

objective-c - NSView内にNSShadowを描画します

NSViewの背景にNSShadowを描画しようとしています。Mac OS X Tigerをサポートする必要があるため、NSGradientの代わりに使用したいと思います。どうすればいいですか?私はこれがかなり簡単であるに違いないことを知っています、そして私はいくつかの間違いをしているに違いありません。

ありがとう!

0 投票する
1 に答える
526 参照

macos - NSShadow 描画バグ

こんにちは、私のアプリケーションでは、CALayer を使用したカスタム ビューがあります (トランジション アニメーションに使用します)。そのビューにいくつかのサブビューを追加します。そのうちの 1 つは NSTableView を使用したビューです。NSTableView の各セルは、そのコンテンツを影で描画します。次のようなコード:

NSTableView の CALayer がオンになっている行が 50 行未満の場合、または IB で CALayer をオフにすると、次のようにセルが描画されます: http://i.stack.imgur.com/zMxmK.png

しかし、私の NSTableView に ~50 以上の行があり、IB で CALayer をオンにすると、次のようにセルが描画されます: http://i.stack.imgur.com/IMyIP.png

どうしてですか?私は持っていたものを壊します:(

0 投票する
0 に答える
625 参照

cocoa - Mountain Lion の NSShadow が表示されない

10.8 にアップグレードしてから、(レイヤーに基づく) ビューにシャドウを設定できなくなったという奇妙な問題があります。

このコード スニペットは 10.7 Lion では正常に機能しましたが、OS のアップグレード以降は機能しません。

IB を介して画像ビューを追加し、これらのシャドウ プロパティを設定するだけのテスト プロジェクトも作成しました。これもうまくいきません。

また、「CocoaSlides」という名前の Apple のサンプル コードもダウンロードしました。ここでは、レイヤーに基づくビューと NSShadow も使用しています。そこでは問題なく動作しますが、呼び出しは私のものと同じようです。

誰かがすでにこの問題に遭遇しましたか? 解決策は見つかりましたか?

0 投票する
1 に答える
163 参照

objective-c - NSScrollViewのDocumentViewのサブクラス化

カスタム描画を行うために、NSScrollViewのDocumentViewをサブクラス化するにはどうすればよいですか?スクロールビュー内でNSShadowを使用して作業を行う必要があります。

0 投票する
3 に答える
4405 参照

objective-c - NSView にシャドウを追加する方法

に影を追加する方法を理解しようと、しばらく時間を費やしましたNSView。今のところ、NSShadowクラスを使用してこれを達成しようとしています。私のコードは以下です。NSViewサブクラスのカスタム init メソッドでシャドウを作成しようとしています。どう頑張っても影が出ない。

編集

これが私がそれをやろうとした方法ですCALayer

quartzPathFromBezierPath:を に変換NSBezierPathCGPathます。