Tôi tạo ra một ứng dụng Cocoa trống trên Xcode cho OS X, và nói thêm:Làm thế nào để NSView không cắt khu vực giới hạn của nó?
- (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];
}
Nhưng nền lớp xoay được cắt bớt theo khu vực ranh giới của quan điểm:
Tôi nghĩ vì một số phiên bản OS X và iOS, chế độ xem sẽ không cắt nội dung của các phần phụ của nó và sẽ hiển thị mọi thứ bên trong và bên ngoài? Trên iOS, tôi thấy hành vi đó, nhưng tôi tự hỏi tại sao nó lại xuất hiện như thế và cách làm mọi thứ hiển thị? (Tôi đã sử dụng Xcode 4.4.1 mới nhất trên Mountain Lion).
(lưu ý: nếu bạn thử mã ở trên, bạn sẽ cần phải liên kết với Quartz Core và có thể nhập tiêu đề lõi thạch anh, mặc dù tôi tự hỏi tại sao tôi không nhập tiêu đề và vẫn biên dịch hoàn hảo)
Tôi là nhà phát triển iOS và gần đây tôi đã bắt đầu làm việc trong Cocoa. Điều này đã khiến tôi phát điên trong ba ngày qua. Tôi ngạc nhiên vì tôi không thể tìm thêm thông tin về nó. Cảm ơn bạn đã đăng giải pháp của bạn !! – KevinM
Có thể có vấn đề khi bạn kết hợp NSView với các lớp và những lớp không có lớp. Nó không phải là ổn định mà nội dung sẽ che phủ trên những người khác. – Slavik
Đặt 'self.wantsLayer = YES' không hoạt động trong' init' vì 1. initializer chính xác là 'initWithFrame:' và 2. thậm chí điều này không được gọi cho các khung nhìn được nạp từ các ngòi ngách. Bạn nên ghi đè '-awakeFromNib' và thực hiện thiết lập của bạn ở đó. Ngoài ra, bạn có thể đặt thuộc tính Lớp hoạt ảnh lõi trong thanh tra Chế độ xem hiệu ứng của IB. –