Est-il possible de changer le rayon de coin de UISegmentedControl? J'ai essayé l'approche suivante que nous utilisons pour changer le rayon de coin d'un UIView.
self.segmentedControl.layer.cornerRadius = 15.0;
self.segmentedControl.layer.masksToBounds = YES;
Cela n'a pas fonctionné car vous pouvez voir qu'il ne fait que couper le coin d'UISegmentedControl .
Merci!
Cela devrait fonctionner:
self.segmentedControl.layer.cornerRadius = 15.0;
self.segmentedControl.layer.borderColor = [UIColor whiteColor].CGColor;
self.segmentedControl.layer.borderWidth = 1.0f;
self.segmentedControl.layer.masksToBounds = YES;
Vous devez spécifier la bordure après avoir défini cornerRadius.
Intégrez UISegmentedControl dans UIView et définissez le rayon de coin pour UIView.
Objectif c
outerView.layer.cornerRadius = CGRectGetHeight(outerView.bounds) / 2;
outerView.layer.borderColor = [UIColor blueColor].CGColor;
outerView.layer.borderWidth = 1;
Rapide
outerView.layer.cornerRadius = CGRectGetHeight(outerView.bounds) / 2
outerView.layer.borderColor = UIColor.blueColor().CGColor
outerView.layer.borderWidth = 1
Le contrôle segmenté ne va pas changer la façon dont il dessine ses angles, il continue donc à dessiner ses angles à sa manière et vous les coupez ensuite. Vous n'êtes pas responsable de la façon dont un contrôle segmenté dessine sa forme limite. Si vous n'aimez vraiment pas la façon dont il est dessiné, vous devrez concevoir votre propre contrôle de substitution à partir de zéro. Le mieux que vous puissiez faire en toute légitimité est de définir l’image d’arrière-plan du contrôle segmenté.
Mise à jour pour la compatibilité Swift 3 & Xcode 8.2
mySegmentedControl.layer.cornerRadius = 25.0
mySegmentedControl.layer.borderColor = UIColor.white.cgColor
mySegmentedControl.layer.borderWidth = 1.0
mySegmentedControl.layer.masksToBounds = true
Votre résultat est dû au fait que quelque chose d'autre (dessin personnalisé?) Contrôle la bordure et non le calque. Heureusement, il semble que les paramètres de cette couche soient prioritaires.
Si vous savez de quelle couleur de bordure vous avez besoin, vous pouvez simplement ajouter (exemple):
self.segmentedControl.layer.borderColor = [UIColor whiteColor].CGColor;
self.segmentedControl.layer.borderWidth = 1.0;
Les solutions précédentes n'ont jamais fonctionné pour moi. Ma solution est:
Pour incorporer la UISegmentedControl
dans un superview, affectez -1 aux contraintes menant, finissant, bas, haut afin de couper la bordure UISegmentedControl
. Enfin, la vue d'ensemble doit être configurée de la manière suivante:
segmentedControl.superview.clipsToBounds = true
segmentedControl.superview.layer.cornerRadius = 0 //whatever
segmentedControl.superview.layer.borderWidth = 1
segmentedControl.superview.layer.borderColor = segmentedControl.tintColor.CGColor
C'est un code converti et fonctionnel pour Swift 4.1 et Xcode 9.3 de message de Yakiv .
segmentedOuterView.layer.cornerRadius = segmentedOuterView.bounds.height / 2
segmentedOuterView.layer.borderColor = UIColor.red.cgColor
segmentedOuterView.layer.borderWidth = 1
segmentedOuterView.layer.masksToBounds = true
Utilisez le code suivant:
segmentContrl.layer.borderColor=*anycolor*.CGColor;
segmentContrl.layer.cornerRadius = 0.0;
segmentContrl.layer.borderWidth = 1.5f;