1
各種各樣的東西,包括(可能最值得注意)的窗口失去其主要地位,然後被帶回到焦點,導致我的一些自定義視圖開發渲染毛刺,直到我做了一些事情(如調整窗口大小)以使這些自定義視圖重新繪製。我認爲這是由於AppKit中的某種緩存錯誤造成的,我相信我不是唯一一個獲得這種行爲的人,所以有人知道如何解決它?可可繪製窗口失去時的故障,然後恢復主要狀態
下面是一個例子:
通知,視圖的背景左側的怪異暗線?即使沒有視圖中的子視圖,也是如此。我在其他一些觀點中發現了其他類似的錯誤。
下面是做繪圖代碼:
void EDDrawGlossEffectInRect(NSRect dirtyRect) {
NSRect topRect, bottomRect;
NSDivideRect(dirtyRect, &topRect, &bottomRect, (dirtyRect.size.height/2), NSMaxYEdge);
[EDLightChromeColor set];
NSRectFill(topRect);
[EDMidChromeColor set];
NSRectFill(bottomRect);
}
和
-(void)drawRect:(NSRect)dirtyRect {
EDDrawGlossEffectInRect(dirtyRect);
NSBezierPath *path = [NSBezierPath bezierPath];
[path setLineWidth:1.0];
NSPoint startPoint = {0, dirtyRect.size.height};
NSPoint endPoint = {dirtyRect.size.width, dirtyRect.size.height};
[path moveToPoint:startPoint];
[path lineToPoint:endPoint];
[[NSColor colorWithCalibratedWhite:0.7 alpha:1] set];
[path stroke];
}
該視圖創建編程,不與界面生成器,這我沒有使用這個項目。
我完全沒有意識到這一點,我猜如果你有一個很大的視圖,裁剪/剪裁等。繪製這個簡單的視圖的一個片段將是痛苦的,可能過度設計,所以我剛剛改變畫出整個邊界,你是正確的,錯誤已經消失。謝謝。 – d11wtq 2010-12-13 04:45:10
如果繪圖成爲使用樂器分析應用程序時的熱點,您可能希望重新訪問該文件。在此之前,我不會擔心過早優化此方法。別客氣。 – 2010-12-13 04:53:19