2013-06-19 40 views
0

我想创建一个应用程序,其中电影在NSView中播放,可能会移动到其他视图后面。我想使用AVFoundation,所以我将渲染视频到AVPlayerLayer。做层支持的NSView打破视图层次?

但是,视频始终在所有其他视频上播放,这似乎是视图中的图层存在的问题。

考虑下面的,在一个视图中创建:

NSView *backView = [[NSImageView alloc] init]; 
NSImage *image = [[NSImage alloc] initWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"Background" withExtension:@"png"]]; 
[backView setImage:image]; 
[self addSubview:backView]; 

NSView *layerView = [[NSView alloc] initWithFrame:CGRectMake(0, 0, 100, 500)]; 
[layerView setWantsLayer:YES]; 
[layerView.layer setBackgroundColor:CGColorGetConstantColor(kCGColorWhite)]; 
[self addSubview:layerView]; 

NSView *frontView = [[NSImageView alloc] init]; 
image = [[NSImage alloc] initWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"Foreground" withExtension:@"png"]]; 
[frontView setImage:image]; 
[self addSubview:frontView]; 

望着这你会得到呈现在一切之上的白色层。 最重要的是,白色图层不会受到父视图的alpha属性的影响。

我在这里犯了一个天真的错误 - 我似乎正在做一切建议。

谢谢!

+0

使用重叠的支持层的视图和非支持层的组合时,您可能会遇到一些奇怪的情况。你有没有尝试制作其他两层支持? – gaige

+0

谢谢你盖格。这看起来确实有用。调整窗口大小时,仍然会出现一些图层弹出,但总的来说,排序按预期工作。你想添加上面的答案吗? – Giles

+0

很高兴听到它。我添加了答案。谢谢。 – gaige

回答

1

使用重叠图层支持视图和非图层支持组合的机会,您可能会感到一些奇怪。我会尝试制作其他两层支持的视图。