2013-04-02 23 views
4

Button with nothing behind it Table loaded Button with table behind it如何下NSButton在一個NSTableView

1)落後按鈕 無表2)表中加載 3)滾動

後,如果我把一個按鈕在一個NSTableView我得到滾動後留下的文物。有誰知道如何解決這一問題?

我目前的解決方案只是將表格中的部分拆分爲2部分。下部分是後臺禁用的按鈕。

My solution for now

+0

[爲什麼NSTextField在表滾動時會在NSTableView上留下工件?](http://stackoverflow.com/questions/22171410/why-does-an-nstextfield-leave-artifacts-over-an -nstableview-當最表scrol) –

回答

0

我有一個類似的問題,解決它,請參閱Why does an NSTextField leave artifacts over an NSTableView when the table scrolls?。基本上OSX將繪製表格的內容,並讓父滾動視圖移動緩存的內容避免重繪成爲表演。通過繼承父滾動視圖,可以強制刷新掛鉤reflectScrolledClipView:方法的表。然後整個表格,包括疊加層,都會在每個滾動條中重新繪製。

0

嘗試NSScrollView方法 - (void)addFloatingSubview:(NSView *)view forAxis:(NSEventGestureAxis)axis 所有的tableviews通常應該在ScrollView中。

0

這是因爲滾動視圖設置爲在滾動時複製其內容,並且只重新繪製新發現的部分作爲性能優化。把它們關掉,用

myTableView.enclosingScrollView.contentView.copiesOnScroll = NO; 

儘管這將使滾動使用多個CPU(你也可以做到這一點在廈門國際銀行,找一個複選框「上滾動副本」)。

可能是一個更好的辦法是切換滾動視圖和按鈕是層支持:

myTableView.enclosingScrollView.wantsLayer = YES; 
myButtonView.wantsLayer = YES; 

(同樣,你可以在「圖層」的XIB文件,其中的檢查器中設置此你可以點擊每個視圖旁邊的複選框給它一個圖層)現在,滾動視圖將只從它自己的圖層(不再包括你的按鈕)複製東西。此外,現在文本視圖的所有合成都將在顯卡中使用。這可以很好地用不透明的按鈕完成,但是,如果您將文本放在透明背景上(例如,如果您的透明按鈕帶有標題),則會丟失子像素反鋸齒功能。

相關問題