0
我有下一個問題:
我有NSTextFieldCell
的子類。在這個小類中,我重寫了drawWithFrame:
方法NSCell
並繪製了自定義的半透明視覺表示。該子類插入NSTextField
,插入半透明視圖。接下來的問題是:繪圖代碼相互疊加,即Cocoa不斷地調用drawWithFrame:
方法,並不斷疊加當前繪製結果到以前的繪圖結果。我怎樣才能避免彼此疊加繪圖?
有代碼:
NSCell不斷重繪
@interface MySubclass : NSTextFieldCell
...
@end
@implementation
...
// Only this methods overrided
- (void) drawWithFrame: (NSRect)cellFrame inView: (NSView *)controlView
{
[_someGradient drawInRect:cellFrame angle:90]; // gradient alpha is 0.5f
NSBezierPath* path = [NSBezierPath bezierPathWithRect:rect];
[path setClip];
NSShadow* shadow = [[NSShadow new] autorelease];
// setup shadow
[shadow set];
[path stroke];
[_someColor setStroke];
[path stroke];
[super drawWithFrame:cellFrame inView:controlView];
}
...
@end
請輸入密碼?很難猜測發生了什麼。 – Abizern
這是足夠的代碼?你需要什麼代碼? – Lexandr
這段簡短的代碼示例沒有顯示任何可能導致不斷重繪的內容,因此無論是在未顯示的代碼中還是在此單元實現之外。 –