Comment faire un UIView circulaire

Je veux faire un UIView ou UIImageView qui soit un cercle. Ou un cercle que je peux modifier la taille en utilisant un curseur et la couleur de avec un choix.

Je peux au moins vous montrer un raccourci pour dessiner des cercles de taille arbitraire. Pas d’OpenGL, pas de dessin Core Graphics nécessaire.

Importez le framework QuartzCore pour accéder à la propriété .cornerRadius de votre UIView ou UIImageView.

#import  

Ajoutez-le également manuellement au dossier Frameworks de votre projet.

Ajoutez cette méthode à votre contrôleur de vue ou à n’importe quel endroit:

 -(void)setRoundedView:(UIImageView *)roundedView toDiameter:(float)newSize; { CGPoint saveCenter = roundedView.center; CGRect newFrame = CGRectMake(roundedView.frame.origin.x, roundedView.frame.origin.y, newSize, newSize); roundedView.frame = newFrame; roundedView.layer.cornerRadius = newSize / 2.0; roundedView.center = saveCenter; } 

Pour l’utiliser, il suffit de passer un UIImageView et un diamètre. Cet exemple suppose que vous avez un UIImageView nommé “circ” ajouté en tant que sous-vue à votre vue . Il devrait avoir un ensemble backgroundColor pour que vous puissiez le voir.

 circ.clipsToBounds = YES; [self setRoundedView:circ toDiameter:100.0]; 

Cela ne fait que gérer UIImageViews mais vous pouvez le généraliser à n’importe quelle UIView .

REMARQUE: Depuis iOS 7, les fichiers clipToBounds doivent être OUI.

 // For those looking to round the corners of an image view imageView.layer.cornerRadius = imageView.bounds.size.width/2; imageView.layer.masksToBounds = YES; 

Si quelqu’un recherche l’équivalent de Swift, la réponse est la suivante (Xcode7.2):

(Pour cela, la hauteur et la largeur doivent être égales.)

 extension UIView { func makeCircular() { self.layer.cornerRadius = min(self.frame.size.height, self.frame.size.width) / 2.0 self.clipsToBounds = true } } 

entrer la description de l'image ici

Pas besoin d’appels graphiques. Il suffit de définir le rayon du coin à la largeur / 2. Cela peut être fait sur n’importe quel object visuel, c.-à-d. Élément d’ UI

Vous devez créer un UIView transparent (couleur de fond alpha de 0), puis, dans son drawRect:, dessinez votre cercle en utilisant les appels CoreGraphics. Vous pouvez également modifier le calque de la vue et lui donner un coinRadius.

Comme mentionné dans certains commentaires, @IBDesignable vous facilite la tâche maintenant, vous pouvez donc utiliser Interface Builder pour configurer votre UIImageView arrondi.

Commencez par créer une classe nommée RoundedImageView.swift et collez-y ce code:

 import UIKit @IBDesignable public class RoundedImageView: UIImageView { override public func layoutSubviews() { super.layoutSubviews() //hard-coded this since it's always round layer.cornerRadius = 0.5 * bounds.size.width } } 

Sélectionnez le UIImageView dans InterfaceBuilder et changez la classe de UIImageView à Customed RoundedImageView:

entrer la description de l'image ici

Définissez Clip to Bounds sur true (ou la photo s’étendra au-delà du cercle):

entrer la description de l'image ici

Il devrait maintenant s’arrondir tout de suite dans InterfaceBuilder, ce qui est très chouette. Assurez-vous de régler la largeur et la hauteur sur les mêmes valeurs ou la forme d’un zeppelin!

entrer la description de l'image ici