我想要繼承NSScroller以繪製我自己的滾動旋鈕。要做到這一點,我已經subclassex NSScrollView和usex下面的代碼實例化了我的自定義NSScrollers:自定義NSScroller問題
- (void)awakeFromNib;
{
NSRect horizontalScrollerFrame = [[self horizontalScroller] frame];
NSRect verticalScrollerFrame = [[self verticalScroller] frame];
NSString *scrollBarVariant = [[[NSUserDefaults standardUserDefaults] persistentDomainForName:NSGlobalDomain] valueForKey:@"AppleScrollBarVariant"];
if (![scrollBarVariant isEqualToString:@"DoubleBoth"]) {
[self setVerticalScroller:[[[TRScroller alloc] initWithFrame:verticalScrollerFrame] autorelease]];
[self setHorizontalScroller:[[[TRScroller alloc] initWithFrame:horizontalScrollerFrame] autorelease]];
}
}
這個工作和我的NSScrollers正確顯示。但我偶爾會在首次加載我的應用程序時看到渲染問題。在界面生成器內,我已經設置了一些NSScrollViews,並將它們的滾動條設置爲自動隱藏。我看到的問題是,當應用程序第一次加載時,滾動條背景會在NSScrollViews內容中呈現。
alt text http://www.freeimagehosting.net/uploads/1d3fc75db8.png
我相信這是因爲我實例我NSScroll子類(TRSubclass)通過awakeFromNib,這意味着滾動條給出的NSScrollView的框架之前,它會自動調整大小以適應窗口保存的位置和大小(換句話說,它使用Interface Builder中默認分配的框架)。最好的解決辦法是什麼?
我試過迫使NSScrollView重新顯示(使用setNeedsDisplay:並顯示:)但沒有運氣。有沒有人遇到類似的問題?
不幸的是,關閉我的NSScrollViews中的「繪製背景」沒有任何效果。無論如何,我都會對看到你的代碼感興趣。 – ndg 2010-07-15 14:33:41
我編輯了我的帖子,查看代碼。至於「繪製背景」選項 - 它應該打開。它也很重要的背景顏色設置,你有沒有改變滾動視圖內的NSClipView實例(實際上它是呈現背景的剪輯視圖)等 – Gobra 2010-07-15 14:56:50