3

デフォルトでは、Cocoaは、透明および半透明のモーダルシートをウィンドウに適用すると、背景のぼかし効果を追加します。ぼかし効果を無効にしたいのですが。どうすればいいですか?

カスタムシート(透明な背景といくつかのコントロールを含むNSWindowのサブクラス)を作成しました。次のような標準的なbeginSheet方法で表示できます。

[NSApp beginSheet:myCustomSheet
   modalForWindow:mainWindow
    modalDelegate:self
   didEndSelector:...];

シートはきれいに表示されますが、背後のすべてがぼやけています。

注1:タッチスクリーン/キオスクタイプのアプリ用に完全にカスタマイズされたユーザーインターフェイスを作成しているため、通常のAppleユーザーインターフェイスガイドラインは適用されません。

注2:シートの下にあるものを見たいのですSirRattyが指摘したように、背景を塗りつぶすことでぼやけた部分をブロックすることができます。私の場合、ぼやけて見えることなく、背景が透けて見えるようにしたいです。

4

3 に答える 3

6

ウィンドウの背景に CI フィルターを設定するために使用できるプライベート API 呼び出しがあります。

http://www.mail-archive.com/cocoa-dev@lists.apple.com/msg16280.html

もありますCGSRemoveWindowFilter

extern CGError CGSRemoveWindowFilter(CGSConnectionID cid, CGSWindowID wid, CGSWindowFilterRef filter);

通常のプライベート API の警告が適用されることに注意してください (将来、廃止または変更される可能性があります)。

于 2010-08-06T04:24:40.887 に答える
1

独自の NSWindow を表示し、ウィンドウの背景を半透明の色で塗りつぶす、独自のシート アニメーション ルーチンを作成できます。setAlphaValue:forNSWindowが子要素の不透明度にも影響するかどうかはわかりません。それらに影響する場合はsetBackgroundColor:、デフォルトのウィンドウの背景色を使用して提供できますが、アルファ コンポーネントを使用すると、子要素には影響しません。

独自のユーザー インターフェイスを開発/設計する際の問題の 1 つは、わずかなカスタマイズのためにホイールを再実装する必要がある場合だと思います。少なくとも、自分で作成すれば、将来的にカスタマイズをより細かく制御できるようになります。

于 2010-08-06T04:34:52.970 に答える
1

私がやったこと:

IB で、ウィンドウ サイズのカスタム NSView をウィンドウのコンテンツ ビュー階層の最下部に追加します。オブジェクトのクラスを MySolidView (またはその他) に設定します。

Xcode では、MySolidView クラスはただ 1 つのことを行います: -drawRect では、ビューを単色で塗りつぶします。(例: ライトグレー)。

于 2010-08-06T03:10:54.340 に答える