2013-07-06 86 views
0

看來下面的代碼不起作用。NSView的CALayer可以成爲其他視圖的子圖層嗎?

WebView *wView = [[WebView alloc] init]; 
[[wView mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]] ]; 
[wView setWantsLayer:YES]; 
NSView *v = [[NSView alloc] init]; 
v.frame = CGRectMake(0, 0, 100, 100); 
[v setLayer:wView.layer]; 
[v setWantsLayer:YES]; 

我想是用另一種觀點的層,例如的NSTextField的層或的WebView層,作爲另一種觀點

可以這項工作的子層是什麼?

回答

1

在您的示例WebView層支持NSView層託管。這意味着從Web視圖的角度來看,它擁有該層,並不期望任何事物直接與它交互。從角度來看,相同的層可以直接操作。

蘋果對這個文檔是很清楚的,

層支持

當使用層支持的觀點,你應該永遠不會與層直接交互。相反,您必須使用標準視圖編程實踐。

層主辦

當使用一個層託管視圖,你不應該依賴於圖紙來看,也不應該添加子視圖層託管視圖。

通過使用這種混合方案,您可能設置自己的麻煩,因爲它與準則衝突!我會嘗試解決你的問題的另一種方式。

相關問題