J'ai vu dans l'inspecteur que je peux changer la couleur d'arrière-plan, mais je voudrais également changer la couleur et l'épaisseur de la bordure, est-ce possible?
275
J'ai vu dans l'inspecteur que je peux changer la couleur d'arrière-plan, mais je voudrais également changer la couleur et l'épaisseur de la bordure, est-ce possible?
Réponses:
Vous devez utiliser le calque de la vue pour définir la propriété de la bordure. par exemple:
Vous devez également vous connecter à QuartzCore.framework pour accéder à cette fonctionnalité.
la source
__bridge CGColorRef
. Cela ne fonctionne pas. Il doit être[UIColor blackColor].CGColor
comme mentionné dans la réponse.#import <QuartzCore/QuartzCore.h>
n'est plus nécessaire.Mise à jour Xcode 6
Depuis la dernière version de Xcode, il existe une meilleure solution:
Avec
@IBInspectable
vous pouvez définir des attributs directement à partir de l' intérieur duAttributes Inspector
.Cela définit le
User Defined Runtime Attributes
pour vous:Il existe deux approches pour configurer cela:
Option 1 (avec mise à jour en direct dans Storyboard)
MyCustomView
.UIView
.@IBDesignable
(cela rend la mise à jour de View en direct). *@IBInspectable
MyCustomView
"
*
@IBDesignable
ne fonctionne que lorsqu'il est défini au début declass MyCustomView
Option 2 (ne fonctionne pas depuis Swift 1.2, voir les commentaires)
Étendez votre classe UIView:
De cette façon, votre vue par défaut contient toujours ces champs modifiables supplémentaires
Attributes Inspector
. Un autre avantage est que vous n'avez pas à changer la classe àMycustomView
chaque fois. Cependant, un inconvénient est que vous ne verrez vos modifications que lorsque vous exécutez votre application.la source
Vous pouvez également créer une bordure avec la couleur de votre souhait.
* r, g, b sont les valeurs comprises entre 0 et 255.
la source
r
,g
etb
devrait probablement être des flotteurs; les diviseurs doivent également être flotteurs:r / 255.0
.Ajouter les @IBInspectables suivants dans l'extension UIView
Et puis, vous devriez pouvoir définir les attributs borderColor et borderWidth directement à partir de l'inspecteur d'attributs. Voir l'image ci-jointe
Inspecteur d'attributs
la source
Lorsque j'utilise la solution CALayer de Vladimir, et en plus de la vue, j'ai une animation, comme le rejet d'un modulaire UINavigationController, je vois beaucoup de problèmes se produire et avoir des problèmes de performances de dessin.
Donc, une autre façon d'y parvenir, mais sans les problèmes et la perte de performances, est de créer une UIView personnalisée et d'implémenter le
drawRect
message comme suit :la source
setNeedsDisplay
la vue. Cela forcera le redessin de l'UIView et implicitement sera rappelédrawRect
. Non testé, mais ...la source
Essayez ce code:
la source
Je ne suggérerais pas de remplacer le drawRect en raison d'un impact sur les performances.
Au lieu de cela, je modifierais les propriétés de la classe comme ci-dessous (dans votre uiview personnalisé):
Je n'ai vu aucun problème lors de l'approche ci-dessus - je ne sais pas pourquoi la mise en initWithFrame arrête ces ;-)
la source
Je voulais ajouter ceci à la réponse de @ marczking ( Option 1 ) en tant que commentaire, mais mon statut modeste sur StackOverflow l'empêche.
J'ai fait un portage de la réponse de @ marczking à l'objectif C. Fonctionne comme un charme, merci @marczking!
UIView + Border.h:
UIView + Border.m:
la source
@IBInspectable fonctionne pour moi sur iOS 9, Swift 2.0
la source
Si vous ne souhaitez pas modifier le calque d'une vue UIV, vous pouvez toujours incorporer la vue dans une autre vue. La couleur parent aurait sa couleur d'arrière-plan définie sur la couleur de la bordure. Il serait également légèrement plus grand, selon la largeur souhaitée de la bordure.
Bien sûr, cela ne fonctionne que si votre vue n'est pas transparente et que vous ne souhaitez qu'une seule couleur de bordure. Le PO voulait la frontière dans la vue elle-même, mais cela peut être une alternative viable.
la source
Si vous souhaitez ajouter une bordure différente sur différents côtés, il peut être facile d'ajouter une sous-vue avec le style spécifique.
la source
couleur de bordure de l'article dans swift 4.2:
la source