現在我想在應用程序運行時隱藏或顯示我的狀況分隔線。使用這種代表方法:如何隱藏nssplitview的分隔線?
- (BOOL)splitView:(NSSplitView *)splitView shouldHideDividerAtIndex:(NSInteger)dividerIndex
{
if (A)
return YES;
else
return NO;
}
但它沒有工作,爲什麼?如何使用這種方法?非常感謝你!
現在我想在應用程序運行時隱藏或顯示我的狀況分隔線。使用這種代表方法:如何隱藏nssplitview的分隔線?
- (BOOL)splitView:(NSSplitView *)splitView shouldHideDividerAtIndex:(NSInteger)dividerIndex
{
if (A)
return YES;
else
return NO;
}
但它沒有工作,爲什麼?如何使用這種方法?非常感謝你!
拆分視圖將該消息發送給其委託,要求委託人是否應隱藏該拆分器。那麼,be the delegate,並回答拆分視圖的問題。
請務必查看the documentation。該消息可能無法完成您想要的內容。該文檔列出了您通過回覆該消息所能做的所有事情。
我已經設置了我班的代表,但仍然無法工作? – jin 2010-01-21 09:03:33
您需要將分割視圖的委託設置爲您的類的實例,並且該實例需要以正確的值響應相應的消息(請參閱鏈接到的文檔)。 – 2010-01-21 21:56:28
您可以重載NSSplitView-dividerThickness並返回0以隱藏所有分隔符。您可以重載NSSplitView-drawDividerInRect:對分隔符進行單獨控制(選擇允許super繪製分隔符)。即使子視圖可見,這些選擇也可以工作。
繼@ CARMIN的筆記,上面覆蓋的NSSplitView dividerThickness
屬性是隻爲我(工作具體而言,從SPLITVIEW返回NSRectZero的事情:effectiveRect:forDrawnRect:ofDividerAtIndex:NSSplitView委託方法 - as detailed here - 沒有工作並導致浮動分隔符與視圖本身脫節)。
下面是斯威夫特代碼:
override var dividerThickness:CGFloat
{
get { return 0.0 }
}
如何在Objective-C中做到這一點?謝謝。 – 2015-07-07 13:30:46
這工作很好!謝謝。 – 2015-10-11 01:17:54
Objective-C: - (CGFloat)dividerThickness {return 0.0f; } – uem 2017-02-17 10:39:29
爲子孫後代着想,與SWIFT 2個工作,你可以調用委託函數SPLITVIEW(_:effectiveRect:forDrawnRect:ofDividerAtIndex :),只是有它返回一個空NSRect
func splitView(splitView: NSSplitView, effectiveRect proposedEffectiveRect: NSRect, forDrawnRect drawnRect: NSRect, ofDividerAtIndex dividerIndex: Int) -> NSRect {
return NSRect.init()
}
以下是如何在Obj-C中做到這一點,不涉及子類。確保您已連接IB中的SplitView委託。
然後在您的委託類:
-(NSRect)splitView:(NSSplitView *)splitView effectiveRect:(NSRect)proposedEffectiveRect forDrawnRect:(NSRect)drawnRect ofDividerAtIndex:(NSInteger)dividerIndex
{
if ([_splitView subviews][1].isHidden ==YES || [[_splitView subviews][1] frame].size.height < 50) //closed or almost closed
{
return NSZeroRect;
}
return proposedEffectiveRect;
}
- (BOOL)splitView:(NSSplitView *)splitView shouldHideDividerAtIndex:(NSInteger)dividerIndex
{
if ([_splitView subviews][1].isHidden ==YES || [[_splitView subviews][1] frame].size.height < 50)
{
return YES;
}
return NO;
}
這將隱藏在拆分視圖被關閉的分隔,但顯示它時,它是開放的。
如果你不希望他們能夠拖動它,即使它被打開,只需剪掉第一個方法中的所有代碼,並只返回NSZeroRect。在第二種方法中做同樣的事情,只返回YES。
splitView:shouldHideDividorAtIndex:不隱藏未摺疊的視圖的分隔線。 – carmin 2013-11-03 01:05:32