Ich habe eine leere Cocoa-Anwendung auf Xcode für OS X und fügte hinzu:Wie macht NSView seinen Begrenzungsbereich nicht abschneiden?
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
self.view = [[NSView alloc] initWithFrame:NSMakeRect(100, 100, 200, 200)];
self.view.wantsLayer = YES;
self.view.layer = [CALayer layer];
self.view.layer.backgroundColor = [[NSColor yellowColor] CGColor];
self.view.layer.anchorPoint = CGPointMake(0.5, 0.5);
self.view.layer.transform = CATransform3DMakeRotation(30 * M_PI/180, 1, 1, 1);
[self.window.contentView addSubview:self.view];
}
Aber der Hintergrund der gedrehten Schicht wird durch die Ansicht der Begrenzungsbereich abgeschoren
ich da einige gedacht Version von OS X und iOS, wird die Ansicht nicht den Inhalt der Unteransichten abschneiden und alles innerhalb und außerhalb zeigen? Auf iOS sehe ich dieses Verhalten, aber ich frage mich, warum es so auftaucht und wie man alles zeigen lässt? (Ich verwende bereits den aktuellsten Xcode 4.4.1 auf Mountain Lion).
(Anmerkung: Wenn Sie den Code oben versuchen, müssen Sie Quarz-Kern verbinden, und möglicherweise den Quarzkern-Header importieren, obwohl ich frage mich, warum ich nicht den Header nicht einführten und es kompiliert noch perfekt)
Ich bin ein iOS-Entwickler, und ich habe vor kurzem begonnen, in Cocoa arbeiten. Das hat mich die letzten drei Tage verrückt gemacht. Ich bin überrascht, dass ich nicht mehr Informationen darüber finden kann. Danke, dass du deine Lösung gepostet hast !! – KevinM
Es kann Probleme geben, wenn Sie NSView mit Ebenen und Ebenen ohne Ebenen mischen. Es ist nicht stabil, welcher Inhalt den anderen überlagert wird. – Slavik
Das Setzen von 'self.wantsLayer = YES' funktioniert nicht in' init', weil 1. der richtige Initialisierer 'initWithFrame:' ist und 2. selbst das für Aufrufe, die von nibs geladen werden, nicht aufgerufen wird. Sie sollten '-awakeFromNib' überschreiben und dort Ihre Einstellungen vornehmen. Alternativ können Sie die Core-Animation-Layer-Eigenschaft im Inspection-Effekt-Inspektor von IB festlegen. –