Como adicionar uma borda a uma imagem circular com máscara
Esta é a minha tentativa:
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 no simulador do iphone 6 (o storyboard tem tamanho de 4,7), mas nos 5s e 6+ parece estranho:
Esse é um problema de layout automático? Sem a borda, o layout automático funciona corretamente. Esta é minha primeira vez trabalhando com máscaras e, portanto, não tenho certeza se o que fiz foi correto.
round
função é chamada emviewDidLayoutSubviews
.
Alguma ideia?