150 votes

Comment créer un UILabel rond sur l’iPhone?

Existe-t-il un moyen intégré de créer des UILabels arrondis? Si la réponse est non, comment pourrait-on créer un tel objet?

233voto

benzado Points 36367

Avant 3.0

Une façon de le faire, que j'ai utilisé récemment, est de créer une sous-classe UIView qui dessine simplement un rectangle arrondi, et ensuite faire le UILabel ou, dans mon cas, UITextView, une sous-vue à l'intérieur d'elle. Plus précisément:

  1. Créer un UIView sous-classe et le nom de quelque chose comme RoundRectView.
  2. En RoundRectViews' drawRect: méthode, dessiner un chemin à travers les limites de l'affichage à l'aide de Graphiques de Base des appels comme CGContextAddLineToPoint() pour les bords et et CGContextAddArcToPoint() pour les coins arrondis.
  3. Créer un UILabel instance et d'en faire une sous-vue de la RoundRectView.
  4. Définir le cadre de l'étiquette à quelques pixels de l'encart de la RoundRectView de limites. (Par exemple, label.frame = CGRectInset(roundRectView.bounds, 8, 8);)

Vous pouvez placer le RoundRectView sur une vue à l'aide de l'Interface Builder si vous créez un générique UIView et puis le changement de sa classe à l'aide de l'inspecteur. Vous ne verrez pas le rectangle jusqu'à ce que vous compilez et exécutez votre application, mais au moins vous serez en mesure de placer la sous-vue et de se connecter aux points de vente ou des actions si nécessaire.

3.0 et versions Ultérieures

l'iPhone OS 3.0 et versions ultérieures prennent en charge l' cornerRadius de la propriété sur l' CALayer classe. Chaque point de vue a un CALayer ainsi que vous pouvez manipuler. Cela signifie que vous pouvez obtenir des coins arrondis en une ligne:

view.layer.cornerRadius = 8;

Vous devrez #import <QuartzCore/QuartzCore.h> et un lien vers le QuartzCore cadre pour obtenir l'accès à CALayer les en-têtes et les propriétés.

145voto

OscarWyck Points 390

Pour les appareils avec iOS 7.1 ou version ultérieure, vous devez ajouter:

yourUILabel.layer.masksToBounds = YES;

11voto

Gabriel Points 195
<ol> <li>vous avez un <code></code> appelé : <code></code> .</li> <li>dans votre import de fichier « m » ou « h » :<code></code></li> <li><p>dans votre <code></code> écrire cette ligne :<code></code></p> <ul> <li>dépend de comment vous voulez que vous pouvez modifier valeur cornerRadius de 8 autres numéro  :)</li> </ul></li> <p>Bonne chance</p></ol>

11voto

Piyush Dubey Points 1489

Vous pouvez faire la bordure arrondie avec largeur de bordure de n’importe quel contrôle de cette façon :-

Il suffit de remplacer avec votre .

Remarque :- N’oubliez pas d’importer``

6voto

Alpinista Points 1799

Une autre méthode consiste à placer une image png derrière le UILabel. J’ai vues avec plusieurs labels que superposer un png fond unique qui a toutes les œuvres d’art pour les étiquettes individuelles.

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