Tengo subclases NSImageView y quiero dibujar un borde alrededor con esquinas redondeadas. Funciona, pero también necesito recortar las esquinas de la imagen.NSImageView esquinas redondeadas + carrera
Por favor, vea mi pantalla:
He creado este código para dibujar el borde/esquinas.
- (void)drawRect:(NSRect)dirtyRect
{
[super drawRect:dirtyRect];
NSColor *strokeColor;
if(self.isSelected)
strokeColor = [NSColor colorFromHexRGB:@"f9eca2"];
else
strokeColor = [NSColor colorFromHexRGB:@"000000"];
[strokeColor set];
[[NSBezierPath bezierPathWithRoundedRect:NSInsetRect(dirtyRect, 1, 1) xRadius:5 yRadius:5] stroke];
}
¿Qué debo hacer para hacer el clip de la imagen?
EDIT:
Bueno me fijo, pero siento que es una manera fea de hacerlo. ¿Algo más inteligente?
NUEVO CÓDIGO:
- (void)drawRect:(NSRect)dirtyRect
{
NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:NSInsetRect(dirtyRect, 2, 2) xRadius:5 yRadius:5];
[path setLineWidth:4.0];
[path addClip];
[self.image drawAtPoint: NSZeroPoint
fromRect:dirtyRect
operation:NSCompositeSourceOver
fraction: 1.0];
[super drawRect:dirtyRect];
NSColor *strokeColor;
if(self.isSelected)
{
strokeColor = [NSColor colorFromHexRGB:@"f9eca2"];
}
else
strokeColor = [NSColor colorFromHexRGB:@"000000"];
[strokeColor set];
[NSBezierPath setDefaultLineWidth:4.0];
[[NSBezierPath bezierPathWithRoundedRect:NSInsetRect(dirtyRect, 2, 2) xRadius:5 yRadius:5] stroke];
}
'NSImageView' no tiene una propiedad' clipsToBounds' - Es una no NS ImageView una interfaz de usuario. – SteveF
¿Por qué cada segunda persona en stackoverflow asume Object-c code == iOS? – strange
si lee cuidadosamente la respuesta, verá que está hablando de la capa de la vista de imagen, que tiene una propiedad clipToBounds incluso en AppKit. EDITAR: no olvide habilitar la capa con '- [NSView setWantsLayer: YES]' – dvkch