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?

questionAnswers(2)

yourAnswerToTheQuestion