UIView con sombra, esquinas redondeadas y dibujo personalizado
Tengo que crear una costumbreUIView
que tendrá esquinas redondeadas, un borde, una sombra y sudrawRect()
El método se reemplaza para proporcionar un código de dibujo personalizado con el que se dibujan varias líneas rectas en la vista (necesito usar un enfoque rápido y liviano aquí, ya que muchas de estas vistas pueden representarse).
El problema que estoy enfrentando actualmente es que la sombra ya no se aplica a las esquinas redondas tan pronto como anulodrawRect()
en la clase de vista (incluso sin ningún código personalizado todavía en ella). Vea la imagen adjunta para la diferencia:
En el controlador de vista estoy usando el siguiente código:
view.layer.cornerRadius = 10;
view.layer.masksToBounds = true;
view.layer.borderColor = UIColor.grayColor().CGColor;
view.layer.borderWidth = 0.5;
view.layer.contentsScale = UIScreen.mainScreen().scale;
view.layer.shadowColor = UIColor.blackColor().CGColor;
view.layer.shadowOffset = CGSizeZero;
view.layer.shadowRadius = 5.0;
view.layer.shadowOpacity = 0.5;
view.layer.masksToBounds = false;
view.clipsToBounds = false;
En lo anuladodrawContext()
Yo usaría algo como:
var context:CGContext = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, UIColor.redColor().CGColor);
// Draw them with a 2.0 stroke width so they are a bit more visible.
CGContextSetLineWidth(context, 2.0);
CGContextMoveToPoint(context, 0.0, 0.0); //start at this point
CGContextAddLineToPoint(context, 20.0, 20.0); //draw to this point
CGContextStrokePath(context);
Pero como se dijo anteriormente, el problema de sombra ocurre incluso sin este código agregado.
¿Hay alguna otra / mejor manera de dibujar elementos ligeros en una vista que no sea este enfoque que sea compatible con esquinas redondeadas y sombras? No quiero agregar vistas adicionales innecesarias o contextos de imagen a la vista ya que estos deben ser ligeros y de alto rendimiento.