Pregunta

Estoy tratando de dibujar una subclase NSTextFieldCell que se parece a la tabla normal redondeada elemento de evento en iCal.

En base a esta pregunta , tengo el siguiente código en mi subclase:

- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {

    NSGradient *gradient = [[NSGradient alloc] initWithStartingColor:[NSColor lightGrayColor] endingColor:[NSColor grayColor]];
    [gradient drawInRect:cellFrame angle:90];
    controlView.layer.cornerRadius = 0.5f;
    [[self title] drawInRect:cellFrame withAttributes:nil];
}

Pero esto sólo señala a la célula como un rectángulo normal, con el relleno de degradado, pero sin las esquinas redondeadas. Obviamente estoy perdiendo algo, pero ¿qué?

¿Fue útil?

Solución

  

En base a esta pregunta , tengo el siguiente código en mi subclase: ...

La respuesta admitidos en esa pregunta asume que la célula está en un campo de texto (es decir, que es la única célula en la vista y que efectivamente es toda la vista), y que este punto de vista es o puede ser capa respaldados.

que no funciona cuando estás celda de una columna de tabla, debido a que no se supone que redibujar toda la vista y lo que es respaldado capa probablemente no va a trabajar correctamente. (No estoy seguro de que uno puede esperar de capa copia de un campo de texto para que funcione correctamente, ya sea algo más que una llanura NSView bien se hace para trabajar capa respaldados o no es;. Si la documentación no dice que es, asumir no lo es.)

[gradient drawInRect:cellFrame angle:90];
     

Pero esto sólo señala a la célula como un rectángulo normal, con el relleno de degradado, pero sin las esquinas redondeadas.

Sí. Eso es todo lo que hace este método, por lo que sin las esquinas redondeadas que ya se están especificadas (por ejemplo, como el radio de la esquina de una capa), es necesario construir y dibujar la forma con esquinas redondeadas usted mismo.

Para hacer eso, crear un camino para un rectángulo con esquinas redondeadas y dibujar el gradiente en que

Otros consejos

¿Qué hay de llamar a:

[[textfield cell] setBezelStyle: NSTextFieldRoundedBezel];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top