Tengo una vista ns y uso dibujar rect para dibujar una imagen de fondo. También tiene 3 subvistas nsbuttons. El problema es que cada vez que el mouse está presionado sobre un botón, los otros desaparecen. Pero cuando elimino el método draw draw, esto no sucede. Así que supongo que esto tiene que ver con el método draw draw para dibujar imágenes.NSView drawRect ¿interfiere con las subvistas?
¿Cómo puedo evitar esto? Gracias.
EDIT: Bien, descubrí dónde está el problema. Básicamente, tengo un NSMenuItem, y estoy poniendo una vista dentro de él con 3 botones. Pero en NSMenu, en la parte superior, hay un relleno de 4 píxeles. Así que, básicamente, para eliminar que el relleno he utilizado la solución proporcionada aquí: Gap above NSMenuItem custom view
partir de la solución que hay una línea en el método drawRect:
[[NSBezierPath bezierPathWithRect:fullBounds] setClip];
el momento, me quito esta línea, y el botón compórtate adecuadamente. Pero luego, el relleno en la parte superior no desaparece.
Aquí es mi drawRect:
- (void) drawRect:(NSRect)dirtyRect {
[[NSGraphicsContext currentContext] saveGraphicsState];
NSRect fullBounds = [self bounds];
fullBounds.size.height += 4;
[[NSBezierPath bezierPathWithRect:fullBounds] setClip];
NSImage *background = [NSImage imageNamed:@"bg.png"];
[background drawInRect:fullBounds fromRect:NSZeroRect operation:NSCompositeCopy fraction:100.0];
[[NSGraphicsContext currentContext] restoreGraphicsState];
}
¿Podría publicar su costumbre 'drawRect:'? –
publicó el método drawRect. Gracias. – user635064