2013-04-02 23 views
0

我已經做了一個視頻播放器,並且圖像被繪製在一個NSView.Have任何方法將NSView轉換爲CALayer?我嘗試使用圖層託管視圖,但開發人員文檔說不能添加任何子視圖到圖層 - 託管視圖。任何人都可以給我一些建議嗎?這個代碼可以運行在OSX 10.6.8,但OSX 10.7和10.8。如何將NSView轉換爲CALayer?

mDisplayView = [[NSView alloc] initWithFrame:NSMakeRect(0, 0, width, height)]; 
mDisplayLayer = [[CALayer layer] retain]; 

[mDisplayView setLayer:mDisplayAudioLayer]; 
[mDisplayView setWantsLayer:YES]; 
[mDisplayView addSubview:mContentView]; 
[mRootLayer addSublayer:mDisplayAudioLayer]; 

的視頻圖像已經被繪製在mContentView。我只是需要找到一種方法,使mContentView的CALayer,這可能嗎?

回答

2

你不轉換一個圖層的視圖 - 您可以通過重寫drawRect:來將其轉換爲視圖,或者將其切換爲圖層背景視圖並使用CoreAnimation。

最好從這裏開始瞭解所涉及的基本概念:

Core Animation Programming Guide

+1

在另一方面,如果提問者是使用AVPlayerLayer,他或她也許不應該將其作爲該層的一個子層因爲[\ [y \] ou應該很少直接修改連接到\ [a \]層支持的NSView的圖層](http://developer.apple.com) /library/mac/documentation/Cocoa/Conceptual/CoreAnimation_guide/CreatingBasicAnimations/CreatingBasicAnimations.html#//apple_ref/doc/uid/TP40004514-CH3-SW18)。在這種情況下,層託管是正確的方法。 (但是你仍然把「視圖」轉換成圖層是正確的。) –

+0

是的。但我的印象是,如何使用視圖和圖層的基本概念並不完全清楚的OP ..可能並不奇怪的CA的方式上OSK上的AppKit頂部的方式。 – Jay