私が抱えている問題は、ココアの座標系に関係していますが、本当にわかりません。これはすべて、水平の上部ペインで発生していNSSplitView
ます。
非常に簡単に言えば、1 つを 2 つ目のすぐ下に配置しようとしてNSBox
います (カスタム ビューをボックスにロードします - すべて正常に動作します)。トップ ボックスの左上隅はペインの左上隅にあり、変更されることはありません。トップの高さが縮む場合は、2 番目のトップをそのすぐ下にスライドさせNSBox
たいと思います。NSBox
逆に、トップのNSBox's
高さが高くなったら、ボトムNSBox
をスライドさせたい。
このコードは 2 回呼び出されます。ボックスは正しく (最初は上のボックス、2 回目は下のボックス)、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];