2012-02-25 11 views
4

こんにちは私はNSSplitViewの最大と最小の座標を制約しようとしています。私はビューコントローラを作成し、それを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 ; 
} 

答えて

0

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

- (BOOL)splitView:(NSSplitView *)splitView canCollapseSubview:(NSView *)subview 
{ 
    return NO; 
} 
+0

10.10で私のために働いていません。 – SpaceDog

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インスタンス全体のサイズ変更(たとえば、自動レイアウトなど)を考慮します。あなたが水平なもので作業している場合、.heightの代わりに.widthに対して計算する必要があります。サブビューが2つ以上ある場合は、dividerIndexを見て適切な値を適用することで、アイデアを拡張できます。

関連する問題