2012-02-25 81 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 2015-01-17 04:24:09

1

讓我們假設你想在一個垂直拆分兩個部分中的每一個至少爲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並按照您認爲合適的方式應用值來擴展該想法。