問題タブ [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.
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
。
どんな洞察も大歓迎です:-)
cocoa - デスクトップでの NSShadow と紙のカール効果
私はこのブログのソースコードで遊んでいました: http://nachbaur.com/blog/fun-shadow-effects-using-custom-calayer-shadowpaths
紙のカール効果を影で再現したかったからです。しかし、CALayer のプロパティ shadowPath は、OSX では使用できず、iPhone でのみ使用できるようです。
そのような効果を達成するための別の方法を提案できる人はいますか?
よろしくお願いします
objective-c - 丸みを帯びた角とドロップ シャドウを備えたカスタム NSView
丸みを帯びた角とドロップ シャドウの両方を持つカスタム NSView を作成しようとしています。私は NSView サブクラスを作成し、次の drawRect: メソッドを持っています。
結果は、丸みを帯びた角で描画された NSView ですが、影はありません (ただし、アンチエイリアシングで角の周りに赤い色が見えます)。NSBezierPath をコメントアウトすると、影のある正方形の NSView が得られます。NSShadow と NSBezierPath が相互に排他的であることを示唆するドキュメントは見当たりませんでした。そのため、明らかに何かが欠けています。
どんなアイデアでも大歓迎です!
cocoa - -setClip メソッドを使用して、カスタム ビューの挿入 NSShadow を再描画
この質問の答えに関連して、私は奇妙な問題を抱えています:
Inset NSShadow と Inset Stroke を描画する
このコードをカスタム ビューの drawRect メソッドで使用します。私はまさにこれを持っています:
マルチライン ラベル (カスタム ビューの兄弟または子) を追加すると問題が発生します。
プログラム ウィンドウがフォーカスを失って戻ってくると、内側の影/ストロークが暗くなります。影が重なっているように見えます。私のウィンドウにこのカスタムビューしかない場合、それはうまくいくので、それは奇妙です。
行にコメントすると
影はもう重ねられませんが、丸みを帯びたコーナーの望ましい効果は得られません (NSBox と同様)。
マルチラインラベルの代わりにプッシュボタンで何が起こるか試してみました.ウィンドウのフォーカスを失ったり取得したりすることで問題はありませんが、ボタンをクリックすると影が重なってしまいます.
問題はここと似ていますが、Java ではなく Cocoa にあります。
ご協力いただきありがとうございます!
objective-c - NSView内にNSShadowを描画します
NSViewの背景にNSShadowを描画しようとしています。Mac OS X Tigerをサポートする必要があるため、NSGradientの代わりに使用したいと思います。どうすればいいですか?私はこれがかなり簡単であるに違いないことを知っています、そして私はいくつかの間違いをしているに違いありません。
ありがとう!
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
どうしてですか?私は持っていたものを壊します:(
cocoa - Mountain Lion の NSShadow が表示されない
10.8 にアップグレードしてから、(レイヤーに基づく) ビューにシャドウを設定できなくなったという奇妙な問題があります。
このコード スニペットは 10.7 Lion では正常に機能しましたが、OS のアップグレード以降は機能しません。
IB を介して画像ビューを追加し、これらのシャドウ プロパティを設定するだけのテスト プロジェクトも作成しました。これもうまくいきません。
また、「CocoaSlides」という名前の Apple のサンプル コードもダウンロードしました。ここでは、レイヤーに基づくビューと NSShadow も使用しています。そこでは問題なく動作しますが、呼び出しは私のものと同じようです。
誰かがすでにこの問題に遭遇しましたか? 解決策は見つかりましたか?
objective-c - NSScrollViewのDocumentViewのサブクラス化
カスタム描画を行うために、NSScrollViewのDocumentViewをサブクラス化するにはどうすればよいですか?スクロールビュー内でNSShadowを使用して作業を行う必要があります。
objective-c - NSView にシャドウを追加する方法
に影を追加する方法を理解しようと、しばらく時間を費やしましたNSView
。今のところ、NSShadow
クラスを使用してこれを達成しようとしています。私のコードは以下です。NSView
サブクラスのカスタム init メソッドでシャドウを作成しようとしています。どう頑張っても影が出ない。
編集
これが私がそれをやろうとした方法ですCALayer
。
quartzPathFromBezierPath:
を に変換NSBezierPath
しCGPath
ます。