Estoy creando una subclase NSView
que tiene esquinas redondeadas. Esta vista está destinada a ser un contenedor y se le agregarán otras subvistas. Estoy tratando de obtener las esquinas redondeadas del NSView
para recortar todas las esquinas de la subvista, pero no puedo obtenerla.Rectángulo redondeado en NSView que recorta todas las subvistas que contienen
- (void)drawRect:(NSRect)dirtyRect {
NSRect rect = [self bounds];
NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:rect xRadius:self.radius yRadius:self.radius];
[path addClip];
[[NSColor redColor] set];
NSRectFill(dirtyRect);
[super drawRect:dirtyRect];
}
El rojo es solo por ejemplo. Si agrego una subvista al rect, Las esquinas no están recortadas:
¿Cómo puedo lograr esto?
El clip en -drawRect: afectan * solo * el dibujo de la vista y no tiene nada que ver con las subvistas que aún existen en el rectángulo completo de la vista. El dibujo no está * sobre * las subvistas, está * bajo * ellas. La respuesta de Jason i s sobre la única manera de lograr esto. Use vistas respaldadas por capa. –