2009-12-20 3 views
2

Здравствуйте, мне нужно реализовать четыре вида сплиттеров, таких как Maya, 3ds max, Blender или другие подобные инструменты моделирования. Я использую NSSplitView на стороне Mac моего редактора, и мне нужно знать, когда пользователь перетаскивает одну панель для синхронизации другой панели.
Есть ли способ получить новый размер от одного NSSplitView и синхронизировать с ним другое представление? У меня есть рабочий код для Windows Forms в версии C# этого редактора, но я не могу понять, как это сделать на Mac. Полный исходный код - .Уведомление об изменении сплиттера NSSplitView

Большое спасибо.

ответ

4

Я установил его с этим кодом:

- (void)splitViewDidResizeSubviews:(NSNotification *)notification 
{ 
    NSSplitView *splitView = (NSSplitView *)[notification object]; 
    NSView *topSubview0 = (NSView *)[[topSplit subviews] objectAtIndex:0]; 
    NSView *topSubview1 = (NSView *)[[topSplit subviews] objectAtIndex:1]; 

    NSView *bottomSubview0 = (NSView *)[[bottomSplit subviews] objectAtIndex:0]; 
    NSView *bottomSubview1 = (NSView *)[[bottomSplit subviews] objectAtIndex:1]; 

    if (fabsf([bottomSubview0 frame].size.width - [topSubview0 frame].size.width) >= 1.0f) 
    { 
     if (splitView == topSplit) 
     { 
      NSLog(@"topSplit"); 
      [bottomSubview0 setFrame:[topSubview0 frame]]; 
      [bottomSubview1 setFrame:[topSubview1 frame]]; 
     } 
     else 
     { 
      NSLog(@"bottomSplit"); 
      [topSubview0 setFrame:[bottomSubview0 frame]]; 
      [topSubview1 setFrame:[bottomSubview1 frame]]; 
     } 
    } 
}