Dans mon application, j'ai besoin d'un UIView
dont la forme est initialement un cercle, mais il peut ensuite être modifié en une ellipse en changeant sa hauteur ou sa largeur. Alors, je l'ai substituée la méthode drawRect()
comme ce qui suit:Comment masquer le contour d'un rectangle en dessinant des courbes
override func drawRect(rect: CGRect) {
if (self.isRound) {
let ctx:CGContext = UIGraphicsGetCurrentContext()!
CGContextSetRGBStrokeColor(ctx, 0.0, 0.0, 0.0, 1.0)
CGContextSetLineWidth(ctx, 0.5)
CGContextAddEllipseInRect(ctx, rect)
CGContextStrokePath(ctx)
self.layer.cornerRadius = frame.size.width/2
}
}
qui fonctionne très bien, le retour de ce résultat:
Je voudrais savoir comment cacher, si possibile, les 4 coins de sorte que seule l'ellipse elle-même soit strictement visible. Y a-t-il un moyen?
UPDATE et SOLUTION
C'est la solution que j'ai trouvé, à la recherche here dans toutes les fonctions d'Apple graphiques de base concernant les ellipses. si mon UIView
est censé être une ellipse Tout d'abord, dans son constructeur, je prends l'astuce suivante concernant le paramètre alpha:
if (self.isRound) {
self.backgroundColor = UIColor(red: 0.0, green: 0.6, blue: 1.0, alpha: 0.0)
}
else {
self.backgroundColor = UIColor(red: 0.0, green: 0.6, blue: 1.0, alpha: 0.4)
}
De cette façon, le rectangle de fond n'est pas montré du tout. Alors, voici ma méthode drawRect()
:
override func drawRect(rect: CGRect) {
if (self.isRound) {
let ctx:CGContext = UIGraphicsGetCurrentContext()!
CGContextSetRGBFillColor(ctx, 0.0, 0.6, 1.0, 0.4) /*!!!*/
CGContextFillEllipseInRect(ctx, rect) /*use Fill and not Stroke */
CGContextStrokePath(ctx)
}
}
qui me donne ce résultat:
De toute évidence, il ** est ** possible, parce que vous avez réussi à dessiner ces cercles blancs sans coins :) Je pense que vous pouvez résoudre ce problème par vous-même. – kelin