У меня проблемы с представлением размещения слоев. Эта версия initWithFrame:
работает так, как ожидалось (вид закрашен черным), при условии, что в Интерфейсном Разработчике выбран 'Wants Core Animation Layer':
- (id)initWithFrame:(NSRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
[self setWantsLayer:YES];
[[self layer] setBackgroundColor:CGColorGetConstantColor(kCGColorBlack)];
[[self layer] setContents:[NSImage imageNamed:NSImageNameBonjour]];
}
return self;
}
Я хочу иметь возможность программно настроить представление, поэтому я хочу избавиться от зависимости от Interface Builder. Ниже представлена вторая версия, предназначенная для этого. Это не работает. Представление останется того же цвета, что и родительское представление:
- (id)initWithFrame:(NSRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
CALayer *rootLayer = [CALayer layer]; //Added this line,
[self setLayer:rootLayer]; //and this line only
[self setWantsLayer:YES];
[[self layer] setBackgroundColor:CGColorGetConstantColor(kCGColorBlack)];
[[self layer] setContents:[NSImage imageNamed:NSImageNameBonjour]];
}
return self;
}
Я скопировал код из документации и поискал в Интернете, и все примеры, которые я нашел, делали именно это, но это не работает!
Что я делаю неправильно?