Cómo agregar un borde a una imagen circular con máscara
Este es mi intento:
func round() {
let width = bounds.width < bounds.height ? bounds.width : bounds.height
let mask = CAShapeLayer()
mask.path = UIBezierPath(ovalInRect: CGRectMake(bounds.midX - width / 2, bounds.midY - width / 2, width, width)).CGPath
self.layer.mask = mask
// add border
let frameLayer = CAShapeLayer()
frameLayer.path = mask.path
frameLayer.lineWidth = 4.0
frameLayer.strokeColor = UIColor.whiteColor().CGColor
frameLayer.fillColor = nil
self.layer.addSublayer(frameLayer)
}
Funciona en el simulador de iphone 6 (el guión gráfico tiene un tamaño de 4.7), pero en los 5s y 6+ se ve raro:
¿Es este un problema de diseño automático? Sin el borde, el diseño automático funciona correctamente. Esta es la primera vez que trabajo con máscaras, por lo que no estoy seguro de si lo que he hecho es correcto.
round
la función se llama enviewDidLayoutSubviews
.
¿Alguna idea?