2012-08-14 5 views
5

Ich habe eine NSPopover in einer Cocoa-Anwendung, und seit Lion - es rendert als halbtransparent, so dass alle Textfelder, Tabellen usw., die es überlagert - diese jetzt durch darunter hindurch und es sieht wirklich seltsam aus. Ich habe die Klassenreferenzdokumente von Apple überprüft, aber es scheint keine Möglichkeit zu geben, sie in Opaque zu ändern. Die einzigen beiden Eigenschaftswerte, die zum Angeben des Aussehens verfügbar zu sein scheinen, sind NSPopoverAppearanceMinimal und NSPopoverAppearanceHUD - aber beide scheinen sich nicht auf Alpha oder Opazität zu beziehen. Ist die einzige Möglichkeit, eine NSPopover undurchsichtig zu machen, indem man drawRect übersteuert? oder kennt jemand einen besseren Weg? Es scheint für UIPopover auf iOS verfügbar zu sein, aber nicht NSPopover für Cocoa ...Möchten Sie die Opazität für einen NSPopover ändern - ist das möglich?

+0

Welche Version von OSX sind verwendest du? Ich sehe dieses Verhalten nicht mit der minimalen Erscheinung - scheint mir ziemlich undurchsichtig. Wenn Sie den Hintergrund ändern möchten, ist es einfach, eine NSBox (vom benutzerdefinierten Typ) hinzuzufügen, um die gesamte Ansicht abzudecken und dann die gewünschte Hintergrundfarbe zu erhalten. – rdelmar

+0

Ich verwende OSX 10.8. Es ist größtenteils undurchsichtig, aber Sie können den Text hinter dem Popover immer noch leicht sehen. Versucht, die NSBox (vom benutzerdefinierten Typ) hinzuzufügen, um das Ganze zu bedecken - was funktionierte, aber es zeichnet sich selbst über den Text, der im Popover ist, und selbst wenn es auf der untersten Ebene (in IB) platziert wird rendert weiterhin die Textfelder, die im Popover enthalten sind. Ich bin sicher, dass es einen Weg gibt, es programmatisch zu machen ... werde versuchen, die Lösung hier zu posten, sobald ich es herausgefunden habe. Vielen Dank! –

+0

Die Textfelder und alle anderen UI-Elemente, die Sie haben, sollten alle in die Box eingebettet sein - Sie tun dies, indem Sie alle auswählen und dann im Editor-Menü auf "Einbetten" klicken. Dies macht sie alle Unteransichten der Box, und sie werden oben angezeigt. – rdelmar

Antwort

Verwandte Themen