Я создаю NSViewController. Он управляет моей иерархией представлений и устанавливает другие представления в одном NSBox.
- (void)displayViewController:(ManagingViewController *)vc
{
NSWindow *w = [box window];
NSView *v = [vc view];
[box setContentView:v];
}
У меня есть два альтернативных вида. Представления имеют корневой слой Quartz Composer и подслой CALayer.
// ----------
// Root Layer
// ----------
QCCompositionLayer* rootLayer = [QCCompositionLayer compositionLayerWithFile:[[NSBundle mainBundle]
pathForResource:@"BackgroundHome"
ofType:@"qtz"]];
[self setLayer:rootLayer];
[self setWantsLayer:YES];
// ----------
// Menu Layer
// ----------
menusLayer = [CALayer layer];
menusLayer.frame = rootLayer.bounds;
menusLayer.layoutManager =[CAConstraintLayoutManager layoutManager];
[rootLayer addSublayer:menusLayer];
// --------------
// Menu Items
// --------------
NSInteger i;
for (i=0;i<[section count];i++) {
NSString *name = [section objectAtIndex:i];
CATextLayer *menuItemLayer = [CATextLayer layer];
menuItemLayer.string = name;
menuItemLayer.font = @"Lucida-Grande";
menuItemLayer.fontSize = fontSize;
menuItemLayer.foregroundColor = CGColorCreateGenericRGB(1.0,1.0,1.0,1.0);
[menuItemLayer addConstraint:[CAConstraint
constraintWithAttribute:kCAConstraintMaxY
relativeTo:@"superlayer"
attribute:kCAConstraintMaxY
offset:-(i*height+spacing+initialOffset)]];
[menuItemLayer addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMidX
relativeTo:@"superlayer"
attribute:kCAConstraintMidX]];
[menusLayer addSublayer:menuItemLayer];
}
[menusLayer layoutIfNeeded];
Я запускаю свое приложение, я могу чередовать представления, но я смотрю только QCCompositionLayer Когда я использую свой собственный класс NSView напрямую, без иерархии NSView, я могу посмотреть все. Где ошибка?
Извините, мой плохой английский и спасибо