4

こんにちは、NSSplitView の最大座標と最小座標を制限しようとしています。ビュー コントローラーを作成し、それを NSSplitView のデリゲートとして割り当てました。デリゲート メソッドが呼び出されますが、分割ビューは、設定しようとしている位置に制限されません。私が間違っていることに関する提案はありますか?

- (CGFloat)splitView:(NSSplitView *)splitView constrainMinCoordinate:(CGFloat)proposedMinimumPosition ofSubviewAt:(NSInteger)dividerIndex 
{
    NSLog(@"Constrain min");

    if (proposedMinimumPosition < 75) 
    {
        proposedMinimumPosition = 75;
    }

    return proposedMinimumPosition;
}

- (CGFloat)splitView:(NSSplitView *)splitView constrainMaxCoordinate:(CGFloat)proposedMax ofSubviewAt:(NSInteger)dividerIndex
{
    NSLog(@"Constrain max");

    if (proposedMax > 200) 
    {
        proposedMax = 200;
    }

    return proposedMax ;
}
4

2 に答える 2

1

垂直スプリッターの 2 つのセクションのそれぞれの高さを少なくとも 70.0 にしたい場合、次のようにします。

- (CGFloat)     splitView:(NSSplitView *)splitView
   constrainMinCoordinate:(CGFloat)proposedMin
              ofSubviewAt:(NSInteger)dividerIndex
{
    return 70.0;
}

- (CGFloat)     splitView:(NSSplitView *)splitView
   constrainMaxCoordinate:(CGFloat)proposedMin
              ofSubviewAt:(NSInteger)dividerIndex
{
    return splitView.frame.size.height - 70.0;
}

減算の理由は、NSplitView インスタンス全体のサイズ変更 (自動レイアウトなど) を動的に考慮するためです。水平方向のものを使用している場合は、 の.width代わりにに対して計算する必要があり.heightます。サブビューが 2 つ以上ある場合は、dividerIndex を見て、必要に応じて値を適用することでアイデアを拡張できます。

于 2015-04-24T21:32:31.137 に答える
0

これを行うことで問題を解決しました。

- (BOOL)splitView:(NSSplitView *)splitView canCollapseSubview:(NSView *)subview 
{
    return NO;
}
于 2012-02-25T07:54:44.653 に答える