Comment puis-je faire un UIImage / -View avec des coins arrondis CGRect (Swift)

Comment puis-je créer un UIImageView avec des coins arrondis sur un terrain de jeu iOS Swift?
À l’intérieur, il doit être rempli d’une couleur.

let imageView = UIImageView(frame: CGRectMake(0, 0, 100, 100)) imageView.backgroundColor = UIColor.redColor() imageView.layer.cornerRadius = 8.0 imageView.clipsToBounds = true 

Résultat:

entrer la description de l'image ici

Pour un cadre d’image à cercle arrondi dans swift, cela a fonctionné pour moi:

  self.profileImageView.image = UIImage(named:"profileUser") self.profileImageView.layer.cornerRadius = self.profileImageView.frame.size.width / 2 self.profileImageView.clipsToBounds = true 

Et pour append une ombre:

  self.profileImageView.layer.masksToBounds = NO; self.profileImageView.layer.cornerRadius = 8; self.profileImageView.shadowOffset = CGSizeMake(5.0, 5.0); self.profileImageView.shadowRadius = 5; self.profileImageView.shadowOpacity = 0.5; 

Essayez ceci, cela a fonctionné pour moi.

 self.profileImageView.layer.cornerRadius = self.profileImageView.frame.size.width / 2 self.profileImageView.clipsToBounds = true 

J’étais fatigué d’écrire set radius et mask à lié pour chaque UIView. J’ai donc fait l’extension suivante pour UIView. Devrait fonctionner pour chaque sous-classe UIView, même si je ne l’ai pas testé. L’extension peut être réduite pour des vues spécifiques que vous utilisez bien sûr.

 extension UIView { func setRadius(radius: CGFloat? = nil) { self.layer.cornerRadius = radius ?? self.frame.width / 2; self.layer.masksToBounds = true; } } 

Si vous ne lui transmettez aucune valeur spécifique, la largeur par défaut de la vue sera utilisée.

Si vous souhaitez avoir une option pour arrondir chaque UIImageView , vous pouvez copier ce code dans votre projet sans oublier de vérifier le clip to bounds et de définir sa valeur sur true

 import UIKit @IBDesignable extension UIImageView { private struct AssociatedKey { static var rounded = "UIImageView.rounded" } @IBInspectable var rounded: Bool { get { if let rounded = objc_getAssociatedObject(self, &AssociatedKey.rounded) as? Bool { return rounded } else { return false } } set { objc_setAssociatedObject(self, &AssociatedKey.rounded, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) layer.cornerRadius = CGFloat(newValue ? 1.0 : 0.0)*min(bounds.width, bounds.height)/2 } } } 

capture d'écran

Swift 3.0, 4.0

Si vous voulez utiliser le storyboard. Je l’ai appliqué et assurez-vous que “Clip to bounds” est activé.

entrer la description de l'image ici