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?
Réponses
Trop de publicités?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:
- Créer un
UIView
sous-classe et le nom de quelque chose commeRoundRectView
. - En
RoundRectView
s'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. - Créer un
UILabel
instance et d'en faire une sous-vue de la RoundRectView. - 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.