メインステータスを失ってフォーカスが戻ってしまうなど、さまざまなことが原因で、カスタムビューの一部でレンダリングの不具合が発生する(ウィンドウのサイズを変更するなど)、これらのカスタムビューを再描画します。私はこれが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];
}
ビューをプログラム的に作成された、ではない私は、このプロジェクトのために使用していないよInterface Builderを、と:
はここで描画を行うコードです。
私は完全にそれを理解していませんでした。あなたは大きな画像を切り取ったり、切り抜いたりしているかどうかはわかります。この単純なビューの断片を描くと、痛いかもしれません。全体の境界線を描くと正しいです、バグは消えました。ありがとうございました。 – d11wtq
Instrumentを使用してアプリのプロファイルを作成するときに描画がホットスポットになる場合は、これを再度ご覧ください。それまでは、この方法を早めに最適化することについては心配しませんでした。どういたしまして。 –