Round Top Coins d'une UIButton en Swift

Je sais que je peux le tour de tous les quatre coins à l'aide de:

 myBtn.layer.cornerRadius = 8
 myBtn.layer.masksToBounds = true

Depuis je veux seulement la deuxième ronde, j'ai fait quelques recherches et trouvé cette:

extension UIView {
    func roundCorners(corners:UIRectCorner, radius: CGFloat) {
        let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
        let mask = CAShapeLayer()
        mask.path = path.CGPath
        self.layer.mask = mask
    }
}

Qui est appelé comme ceci:

view.roundCorners([.TopLeft , .TopRight], radius: 10)

Mais cela ne fonctionne pas pour une UIButton. Lorsque je change l'extension de type UIButton et de passer à un bouton , la sortie ressemble à ceci:

Round Top Coins d'une UIButton en Swift

La question est, comment puis-je adapter ce travail sur un UIButton?

Veuillez envisager d'accepter ma réponse, parce qu'elle est la plus précise de la réponse au problème. Les futurs visiteurs de cette question ne sera pas contente tout simplement de voir un tas de code qui fonctionne, mais n'explique pas pourquoi il travaille (que c'est ce qu'actuellement accepté de répondre à n'), mais plutôt en le voyant le problème – et qui est cloué par ma réponse.
voir ma réponse ici: stackoverflow.com/a/40222533/2594699

OriginalL'auteur Dave G | 2016-05-11