我在 Xcode for OS X 上创建了一个空的 Cocoa 应用程序,并添加了:
- (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];
}
但是旋转图层的背景被视图的边界区域裁剪:
我认为自从某些版本的 OS X 和 iOS 以来,视图不会剪切其子视图的内容,而是会显示内部和外部的所有内容?在 iOS 上,我确实看到了这种行为,但我想知道为什么它会这样显示以及如何让所有内容都显示出来?(我已经在 Mountain Lion 上使用最新的 Xcode 4.4.1)。
(注意:如果您尝试上面的代码,您将需要链接到 Quartz Core,并且可能会导入 Quartz Core 头文件,虽然我想知道为什么我没有导入头文件并且它仍然可以完美编译)