OS X 用の Xcode で空の 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 ヘッダーをインポートする必要がありますが、ヘッダーをインポートしなかったのに、まだ完全にコンパイルされているのは不思議です)