是的,NSTableView 高速緩存孔表的繪圖,以便滾動視圖不必爲每個像素刷新它。但是,這正是需要的。幸運的是可以做到的,我設法子類NSScrollView以下列方式將屬性和一個鉤子添加到reflectScrolledClipView:
:
@interface EHScrollView : NSScrollView
@property (nonatomic, weak) NSView *refreshView;
@end
的實施將是:
#import "EHScrollView.h"
@implementation EHScrollView
- (void)reflectScrolledClipView:(NSClipView *)aClipView
{
[super reflectScrolledClipView:aClipView];
[self.refreshView setNeedsDisplay:YES];
}
@end
那麼唯一需要的是修改用戶界面的xib。在表格嵌入到滾動視圖中的情況下,選擇滾動視圖並將其修改爲繼承自定義類EHScrollView。然後,在視圖控制器初始化中,通過refreshView
屬性將出口同時用於滾動視圖和表視圖以將後者鏈接到前者。
現在,每一個滾動將自動調用setNeedsDisplay:
refreshView
,這意味着表和頂部重疊的任何東西都將被重繪。當然,這比不刷新表的性能更強,所以只能在有意義的地方使用。
所有這些,或只是使用myScrollView.contentView.copiesOnScroll = NO; –