У меня проблема, связанная с системой координат в Cocoa, но я действительно не знаю. Все это происходит в верхней панели горизонтальной линии NSSplitView
.Переместить NSBox в верхнюю панель горизонтального NSSplitView
Очень просто, я пытаюсь позиционировать один NSBox
прямо под вторым (я загружаю пользовательские представления в коробки - все работает отлично). Верхний левый верхний угол находится в верхнем левом углу панели и никогда не изменяется. Если высота вершины NSBox
сжимается, я хочу, чтобы верхняя часть второго NSBox
скользила прямо под ней. И наоборот, если верхняя высота NSBox's
увеличивается, я хочу, чтобы нижняя NSBox
скользила вниз.
Этот код вызывается дважды. Коробка правильная (первый тайм-бокс, второй тайм-бокс) и v правильный (это представление, которое я загружаю в окно - это отлично работает, и именно это приводит к тому, что высота изменяется в верхней части окна).
NSSize destBoxSize = [[box contentView] frame].size; //the size of the box in the view to load the view into
NSSize newViewSize = [v frame].size; // the size of the view to be loaded
float deltaWidth = [horizSplitView frame].size.width - destBoxSize.width;
float deltaHeight = newViewSize.height - destBoxSize.height;
NSRect boxFrame = [box frame];
boxFrame.size.height += deltaHeight;
boxFrame.size.width += deltaWidth;
boxFrame.origin.y -= deltaHeight;
NSLog(@"vc=%@ boxFrame x%f y%f h%f w%f", nibName, boxFrame.origin.x, boxFrame.origin.y, boxFrame.size.height, boxFrame.size.width);
// Clear the box for resizing
[box setContentView:nil];
[box setContentView:v];
[box setFrame:boxFrame];
Если вы добавите четыре пробела в каждую строку кода, она будет подсвечена; таким образом, легче читать и видеть это между другими словами. – kiamlaluno
«Я пытаюсь расположить один NSBox прямо под вторым (я загружаю пользовательские представления в коробки - все работает отлично). ... Если высота верхнего NSBox сжимается, я хочу, чтобы верхняя часть второго NSBox скользила прямо под ним. И наоборот, если высота верхней NSBox возрастает, я хочу, чтобы нижний NSBox скользил вниз. «Вы имеете в виду, что высота нижней коробки никогда не меняется? Что же заполняет пространство? –
Пожалуйста, отформатируйте код с помощью кнопки кода (101 010). Просто выберите код (с комментариями), вырежьте его, нажмите кнопку кода редактора и снова вставьте код, где говорится: «Введите код здесь». –