我遇到的问题与 Cocoa 中的坐标系有关,但我真的不知道。这一切都发生在水平的顶部窗格中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];