198 votes

UIlabel layer.cornerRadius ne fonctionne pas dans iOS 7.1

Je suis actuellement en train de regarder un UILabel avec la propriété addMessageLabel.layer.cornerRadius = 5.0f; Sur un appareil avec iOS 7.0 installé, il a des coins arrondis. Sur un appareil avec iOS 7.1 installé, il n'a pas de coins arrondis.

S'agit-il simplement d'un bogue avec iOS 7.1 ?

519voto

RaheelSadiq Points 1986

Définir la propriété clipsToBounds à vrai

addMessageLabel.clipsToBounds = true

3 votes

Je ne sais pas pourquoi vous n'avez pas eu à le faire sur iOS 7 mais sur iOS 7.1, mais ça a marché ! Merci

0 votes

C'est vraiment bizarre !

11 votes

Non, pas bizarre...juste "en progrès"...<humf>, il semble que les clipsToBounds de UILabel sont maintenant par défaut à FALSE comme la plupart des autres UIViews. Apple essaie probablement de rendre les choses plus cohérentes. Moi aussi, je viens d'avoir le même problème.

67voto

Allen Points 73

Je pense que la meilleure façon de régler le rayon des coins est :

enter image description here

et assurez-vous que la case "Clip Subviews" est cochée :

enter image description here

Cocher "Clip Subviews" équivaut au code suivant addMessageLabel.clipsToBounds = YES; .

31voto

Tapas Pal Points 1490

Essayez les éléments suivants,

[[addMessageLabel layer] setCornerRadius:5.0f];
[[addMessageLabel layer] setMasksToBounds:YES];

//or
[addMessageLabel setClipsToBounds:YES];

Swift

addMessageLable.layer.cornerRadius = 5.0
addMessageLable.layer.masksToBounds = true

//or
addMessageLable.layer.clipsToBounds = true

5voto

Honey Points 9108

Mon problème était un peu différent.

Alors que je a fait faire btn.clipsToBounds = true

Je n'étais pas en train de faire :

btn.layer.cornerRadius = 20

Parce que j'avais des tailles d'écran différentes. Au lieu de cela, j'ai suivi este répondre et l'a fait :

override func layoutSubviews() {
    seeMoreButton.layer.cornerRadius = seeMoreButton.bounds.size.height / 2
}

Ça ne marchait pas parce que j'avais oublié d'ajouter super.layoutSubviews() . Le code correct est :

override func layoutSubviews() {
    super.layoutSubviews()
    seeMoreButton.layer.cornerRadius = seeMoreButton.bounds.size.height / 2
}

3voto

Mano Rajendran Points 39

J'ai essayé la méthode ci-dessous et j'ai obtenu un résultat positif.

yourlabelname.layer.cornerRadius = 10.0f;
[yourlabelname setClipsToBounds:YES];

Y a-t-il quelque chose d'autre qui vous arrête ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X