Ich habe eine Ansicht Hierarchie, die wie folgt aussieht:unberechenbares Verhalten mit Schicht gesichert/Schicht NSViews Hosting
Also im Grunde habe ich eine NSSplitView mit einem Subview, die eine Scroll-Ansicht enthält (für eine Tabellenansicht) sowie eine Fußzeilenansicht mit 3 Unteransichten. Einige wichtige Dinge zu beachten:
- Verwendet die 10,8 Basis SDK, keine automatische Layout
- Der Fensterinhalt Ansicht, die geteilte Ansicht, die übergeordnete Sicht auf die Rolle und Fußzeile Ansichten, und die Scroll-Ansicht und Fußzeilenansicht sind alle Layer Backed mit einer NSViewContentsRedrawOnSetNeedsDisplay Redraw-Richtlinie.
- Die
NSClipView
derNSScrollView
ist eine spezielle Unterklasse, die eine Schicht hosting Ansicht ist und eineCAScrollLayer
als Trägerschicht verwendet. - Die Farbansicht ist eine einfache Layer-Backed-Ansicht mit Hintergrundfarbe.
- Die Hintergrund Ansicht ist eine Schicht-Hosting Ansicht, die eine Unterschicht mit dem Inhalt Eigenschaft auf ein Bild (contentsCenter ist auch gesetzt) gesetzt hat
- Die Seiten eine Schicht ist Backed Containeransicht, die eine einzelne Unteransicht enthält, eine benutzerdefinierte Layer-Backed Schaltflächenansicht (kein NSButton).
- Die Fußzeile Ansicht überlappt die Scroll-Ansicht um etwa 3 Pixel
Ich bin mit diesem Layout ziemlich unberechenbares Verhalten zu bekommen. Hier sind die drei verschiedenen Szenarien, die ich bekomme, die jedes Mal randomize, wenn ich die App starte.
1) Alles erscheint OK. Hintergrund-Ansicht und alle Inhalte sind:
2) Die Taste erscheint in Ordnung, aber der Hintergrund Blick scheint zu sein, teilweise transparent:
3) Hintergrundansicht erscheint richtig aber der Knopf ist weg:
Es gibt absolut keinen Code, der sich zwischen jedem dieser Szenarien ändert. Ich höre einfach auf und starte die App erneut. Ich habe sichergestellt, dass ich nichts zur Opazität zur Laufzeit ändere. Das einzige, was ich zur Laufzeit mache, sind die Hintergrundfarben und Bilder in den Ansichten.
EDIT: Ich hatte das Gefühl, dass die überlappenden Ansichten Probleme verursachen könnten, also habe ich ohne die Überlappung getestet und die gleichen Ergebnisse erhalten.
EDIT 2: Dies scheint ein Problem mit der zPosition
der Schichten der Layer-Backed-Ansichten zu sein. Die Reihenfolge ist verschlüsselt und zufällig. Wenn ich die zPosition der Ebenen manuell auf die richtigen Werte für die Subview-Reihenfolge einstelle, ist alles in Ordnung. Leider kann ich keinen saubereren Weg finden, dies zu tun, als nur zPosition
einzustellen.
Führen Sie eine Beta von OS X? Ich hatte einige ziemlich schlimme Erfahrungen mit Layern und Layer-Backed Dings unter der 10.8.3 Beta. – CodaFi
Nein, läuft 10.8.2 – indragie