Comment puis-je faire un UIImage/ - vue avec les coins arrondis Cgnrect (Swift)
Comment puis-je faire une UIImageView avec des coins arrondis sur un court Terrain de jeu iOS?
À l'intérieur, il doit être rempli avec une couleur.
6 réponses
let imageView = UIImageView(frame: CGRectMake(0, 0, 100, 100))
imageView.backgroundColor = UIColor.redColor()
imageView.layer.cornerRadius = 8.0
imageView.clipsToBounds = true
Résultat:

pour le cadre d'image en Cercle arrondi dans swift, ce qui a fonctionné pour moi était:
self.profileImageView.image = UIImage(named:"profileUser")
self.profileImageView.layer.cornerRadius = self.profileImageView.frame.size.width / 2
self.profileImageView.clipsToBounds = true
Et pour l'ajout d'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 ça, ça a marché pour moi.
self.profileImageView.layer.cornerRadius = self.profileImageView.frame.size.width / 2
self.profileImageView.clipsToBounds = true
j'en avais marre d'écrire définir le rayon masque lié pour chaque uivi. Donc j'ai fait l'extension suivante pour uivi. Devrait fonctionner pour chaque sous-classe UIView, bien que je ne l'ai pas testé. L'extension peut être réduit 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;
}
}
il sera par défaut à la moitié de la largeur de la vue si vous ne lui passez aucune valeur spécifique.
Si vous voulez avoir une option pour chaque tour UIImageView, vous pouvez copier ce code dans votre projet, sans oublier de vérifier l' clip to bounds et définissez sa valeur à 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
}
}
}

Swift 3.0, 4.0
si vous voulez utiliser le storyboard. J'ai appliqué ceci et m'assure que "Clip to bounds" est activé.
