Quelqu'un peut-il m'aider ici? Nouveau en tant que développeur iPhone. J'essaie d'afficher une image .png dans un cercle au lieu d'un rectangle qui est la norme pour l'iPhoneUIImage dans un cercle
Répondre
Utilisez un UIImageView et définissez le coinRadius à mi-hauteur et largeur. view.layer.cornerRadius = cornerRadius;
Eh bien, tous les fichiers PNG sont les « rectangles », mais si vous voulez avoir le apperence d'un cercle ou un autre objet non rectangle sur l'écran, vous pouvez le faire en utilisant transparacy. Pour vous assurer que les pixels transparents de l'image sont également transparents sur l'iPhone, vous pouvez définir la couleur d'arrière-plan de l'UIImageView à effacer. Cela peut être fait dans Interface Builder en faisant glisser le curseur d'opacité dans le sélecteur de couleur de fond tout en bas, ou dans le code comme suit:
UIImage *image = [UIImage imageNamed:@"yourRoundImage.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
imageView.backgroundColor = [UIColor clearColor];
[self.view addSubview: imageView];
Si vous voulez simplement ajouter les coins ronds, pour faire un cercle, vous pouvez également utiliser la propriété cette cornerRadius comme si vous avez ajouté le cadre QuartzCore à votre projet:
#import <QuartzCore/QuartzCore.h>
UIImage *image = [UIImage imageNamed:@"yourRoundImage.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
imageView.layer.cornerRadius = image.size.width/2;
imageView.layer.masksToBounds = YES;
[self.view addSubview: imageView];
essayer ce code
yourImageView.layer.cornerRadius = yourImageView.frame.size.height /2;
yourImageView.layer.masksToBounds = YES;
yourImageView.layer.borderWidth = 0;
cette image de spectacle comme ios 7 cercle image merci
j'ai essayé cela fonctionne bien merci @waseem – iOSDevp
image merci;) – animaonline
parfait! Merci – malhal
Changer le cornerRadius de la vue de l'image fonctionne bien si vous avez seulement quelques images dans votre vue. Cependant, si la vue de l'image est dans une vue de table, les performances seront affectées.
Certaines des autres options:
- Faire le cercle actif d'image sur le serveur ou manuellement si elles sont regroupées dans l'application, avec des parties transparentes pour la zone externe du cercle.
- Si l'arrière-plan de l'affichage de l'image ne change pas, créez une image de superposition dont la partie du cercle interne est transparente, et le reste doit être identique à l'arrière-plan. Définissez également la propriété backgroundColor de l'affichage de l'image sur clearColor.
- Lors de la réception des images, modifiez-les en code pour former un cercle, dans un fil d'arrière-plan.
Essayez ceci pour obtenir des coins arrondis de la vue de l'image et aussi pour colorer les coins:
self.imgView.layer.cornerRadius =self.imgView.frame.size.height/2;
self.imgView.layer.masksToBounds = YES;
self.imgView.layer.borderColor = [UIColor colorWithRed:148/255. green:79/255. blue:216/255. alpha:1.0].CGColor;
self.imgView.layer.borderWidth=2;
Condition *: La hauteur et la largeur de la imageView doit être la même pour obtenir des coins arrondis.
Ma contribution avec une extension rapide utilisée pour définir un UIImageView comme cercle
extension UIImageView{
func asCircle(){
self.layer.cornerRadius = self.frame.width/2;
self.layer.masksToBounds = true
}
}
Il suffit d'appeler MyImageView.asCircle()
Oui, j'ai implémenté exactement la même solution dans mon code, sauf que j'ai fait une extension de UIView, car je peux appeler la même méthode même pour d'autres objets (comme des boutons ...). – Andrej
Je vais ajouter une extension un peu plus universel à UIImageView
qui fonctionnera avec des images non-carrés . A noter que cela fonctionnera plus lentement que la méthode cornerRadius
.
extension UIImageView {
@IBInspectable public var asEllipse:Bool {
get {
if let mask = self.layer.mask {
return mask.name == kMaskLayerName
}
return false;
}
set {
if (newValue) {
let ellipseMask = CAShapeLayer()
ellipseMask.name = kMaskLayerName
ellipseMask.path = CGPathCreateWithEllipseInRect(self.bounds, nil)
ellipseMask.strokeColor = UIColor.clearColor().CGColor
ellipseMask.fillColor = UIColor.whiteColor().CGColor
self.layer.mask = ellipseMask
} else if self.asEllipse {
self.layer.mask = nil
}
}
}
}
private let kMaskLayerName="EllipseMaskLayer"
Pourquoi est-ce plus lent que 'cornerRadius'? –
Je suppose que ce sont les allocations d'objets qui le ralentissent: une CAShapeLayer, une CGPath et deux UIColor. Bien que cela ait été testé pour des images de cellules dans une tableView sur un iPhone 5 et plus, il n'y a pas de ralentissement perceptible lors du défilement. TBH Je n'ai pas fait une bonne recherche d'optimisation dans Instruments. – user3099609
Swift 4: Cela devrait afficher votre .png dans un cercle.
- Faites glisser (ctrl + clic) une
IBOutlet
d'une image vers votre code.
cornerRadius Le rayon à utiliser lors de l'élaboration des angles arrondis pour l'arrière-plan de la couche. Animable. https://developer.apple.com/documentation/quartzcore/calayer/1410818-cornerradius
propriété clipsToBounds Valeur booléenne qui détermine si les sous-vues sont limitées aux limites de la vue. https://developer.apple.com/documentation/uikit/uiview/1622415-clipstobounds
2.Inside viewDidLoad(), Utilisez la propriété d'instance layer.cornerRadius
et clipsToBounds
.
profileImage.layer.cornerRadius = 50
profileImage.clipsToBounds = true
http://stackoverflow.com/a/21329347/501487 – aToz
http://stackoverflow.com/questions/7399343/making-a-uiimage-to-a-circle-form/21954535#21954535 –