2013-04-17 2 views
0

Я очень новичок в разработке AVFoundation и QuartzCore, и у меня возникают проблемы с CALayers. Извините, если это глупая проблема.CALayer _layer не инициализируется при запуске приложения ?! (OSX, Cocoa)

Вот мой код:

.h

#import <Cocoa/Cocoa.h> 
#import <AVFoundation/AVFoundation.h> 
#import <QuartzCore/QuartzCore.h> 
@interface Document : NSPersistentDocument 
{ 
    AVPlayer *player; 
    AVPlayerLayer *playerLayer; 
    NSView *playerView; 
} 
@property AVPlayerLayer *playerLayer; 
@property AVPlayer *player; 
@property IBOutlet NSView *playerView; 


@end 

.m

#import "Document.h" 

@implementation Document 
@synthesize playerView; 
@synthesize player; 
@synthesize playerLayer; 

- (id)init 
{ 
    self = [super init]; 
    if (self) {  
    } 
    return self; 
} 

- (NSString *)windowNibName 
{ 
    return @"Document"; 
} 

- (void)windowControllerDidLoadNib:(NSWindowController *)aController 
{ 
    [super windowControllerDidLoadNib:aController]; 
    [[aController window] setMovableByWindowBackground:YES]; 

    // HERE the layer is nill, and I don't understand why it's not getting initialized?! 
    [[[self playerView] layer] setBackgroundColor:CGColorGetConstantColor(kCGColorBlack)]; 
} 

+ (BOOL)autosavesInPlace 
{ 
    return YES; 
} 
@end 

Любой вид помощи очень ценится!

ответ

1

Если layer ничтожно, вам следует начать с подозрения, что его родитель playerView равен нулю. Это? Если это так, вы, вероятно, не подключили выход в наконечник. (Я вижу, у вас есть объявилplayerView как розетке в код, но это не означает, что вы настроили перо правильно.)

+0

проблема есть ... что playerView не ноль! Я сделал, подключить мой пин к плееру. Вот почему это для меня загадка :) –

+1

Вы включили 'wantLayer' для этого вида? В Mac OS X вы автоматически не получаете слой так, как вы делаете на iOS ... https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreAnimation_guide/SettingUpLayerObjects/SettingUpLayerObjects.html – matt

+0

nope ... этот, который я не знал ... где я должен это делать? ... на самом деле он говорит: для представлений, которые вы создаете программно ... Но это представление не создано программно, я настраивал его в банке , правильно?! –