Existe-t-il un moyen intégré de créer des étiquettes UIL à coins arrondis? Si la réponse est non, comment procéderait-on pour créer un tel objet?
la source
Existe-t-il un moyen intégré de créer des étiquettes UIL à coins arrondis? Si la réponse est non, comment procéderait-on pour créer un tel objet?
iPhone OS 3.0 et versions ultérieures prend en charge la cornerRadius
propriété sur la CALayer
classe. Chaque vue a une CALayer
instance que vous pouvez manipuler. Cela signifie que vous pouvez obtenir des coins arrondis en une seule ligne:
view.layer.cornerRadius = 8;
Tu devras #import <QuartzCore/QuartzCore.h>
connecter au framework QuartzCore pour accéder aux en-têtes et propriétés de CALayer.
Une façon de le faire, que j'ai utilisée récemment, est de créer une sous-classe UIView qui dessine simplement un rectangle arrondi, puis de créer l'UILabel ou, dans mon cas, UITextView, une sous-vue à l'intérieur. Plus précisément:
UIView
sous-classe et nommez-la quelque chose comme RoundRectView
.RoundRectView
la drawRect:
méthode de, tracez un chemin autour des limites de la vue en utilisant des appels Core Graphics comme CGContextAddLineToPoint () pour les arêtes et CGContextAddArcToPoint () pour les coins arrondis.UILabel
instance et faites-en une sous-vue de RoundRectView.label.frame = CGRectInset(roundRectView.bounds, 8, 8);
)Vous pouvez placer le RoundRectView sur une vue à l'aide d'Interface Builder si vous créez un UIView générique, puis modifiez sa classe à l'aide de l'inspecteur. Vous ne verrez pas le rectangle tant que vous n'aurez pas compilé et exécuté votre application, mais au moins vous pourrez placer la sous-vue et la connecter à des prises ou à des actions si nécessaire.
Pour les appareils équipés d'iOS 7.1 ou version ultérieure, vous devez ajouter:
la source
Pour Swift IOS8 à partir de la réponse OScarsWyck:
la source
YES
pourtrue
.UILabel
appelé:myLabel
.#import <QuartzCore/QuartzCore.h>
dans votre
viewDidLoad
écrivez cette ligne:self.myLabel.layer.cornerRadius = 8;
Bonne chance
la source
Vous pouvez créer une bordure arrondie avec la largeur de la bordure de n'importe quel contrôle de cette manière: -
Remplacez simplement
lblName
par votreUILabel
.Remarque: - N'oubliez pas d'importer
<QuartzCore/QuartzCore.h>
la source
J'ai créé une
UILabel
sous-classe rapide pour obtenir cet effet. De plus, je règle automatiquement la couleur du texte sur noir ou blanc pour un contraste maximal.Résultat
Postes SO utilisés:
Terrain de jeux
Collez simplement ceci dans un Playground iOS:
la source
Une autre méthode consiste à placer un png derrière le UILabel. J'ai des vues avec plusieurs étiquettes qui superposent un seul png d'arrière-plan contenant toutes les illustrations pour les étiquettes individuelles.
la source
xCode 7.3.1 iOS 9.3.2
la source
Si vous voulez coin arrondi d'objets comme interface utilisateur (
UILabel
,UIView
,UIButton
,UIImageView
) par storyboard puis définissezclip to bounds
true et définissezUser Defined Runtime Attributes
chemin clé commelayer.cornerRadius
, type = Nombre et valeur = 9 (comme votre exigence)la source
la source
Swift 3
Si vous voulez une étiquette arrondie avec une couleur d'arrière-plan, en plus de la plupart des autres réponses, vous devez également définir
layer
la couleur d'arrière-plan de. Cela ne fonctionne pas lors de la définition de laview
couleur d'arrière-plan.Si vous utilisez la mise en page automatique, souhaitez un peu de remplissage autour de l'étiquette et ne souhaitez pas définir la taille de l'étiquette manuellement, vous pouvez créer une sous-classe UILabel et remplacer la
intrinsincContentSize
propriété:Pour combiner les deux, vous devrez également définir
label.textAlignment = center
, sinon le texte serait aligné à gauche.la source
Dans Monotouch / Xamarin.iOS, j'ai résolu le même problème comme ceci:
la source
Fonctionne parfaitement dans Swift 2.0
la source
Avez-vous essayé d'utiliser le
UIButton
générateur d'interface (qui a des coins arrondis) et d'expérimenter les paramètres pour le faire ressembler à une étiquette. si tout ce que vous voulez est d'afficher du texte statique à l'intérieur.la source
"cornerRadius" est la propriété clé pour définir les bords arrondis, où si vous utilisez le même style pour toutes les étiquettes de votre application, je recommanderais une méthode d'extension.
Code:
Production:
Pourquoi la méthode d'extension?
Créez un fichier Swift et ajoutez le code suivant, qui a la méthode Extention à la classe "UILabel", où cette méthode est définie par l'utilisateur mais fonctionnera pour toutes les étiquettes de votre application et aidera à maintenir la cohérence et le code propre, si vous changer n'importe quel style à l'avenir ne nécessite que dans la méthode d'extension.
la source
En fonction de ce que vous faites exactement, vous pouvez créer une image et la définir comme arrière-plan par programme.
la source