Comment puis-je ajouter une bordure de ligne en pointillé autour UIView
.
Quelque chose comme ça
ios
objective-c
iphone
uiview
Sohaib
la source
la source
Réponses:
Vous pouvez définir la bordure avec ce modèle en utilisant le chemin de calque et de Bézier comme dans les exemples ci-dessous.
Objectif c
Swift 3.1
Vous pouvez également définir différents types de conception en utilisant l'image de motif comme l'exemple ci-dessous.
Ici, vous devez ajouter un
<QuartzCore/QuartzCore>
cadre dans le projet et l'importer avec la ligne ci-dessous dans leYourViewController.m
fichier.la source
Une autre méthode si vous aimez les sous-couches. Dans l'initialisation de votre vue personnalisée, mettez ceci (_border est un ivar):
Et dans vos layoutsubviews, mettez ceci:
la source
_border.path = [UIBezierPath bezierPathWithRoundedRect:self.bounds cornerRadius:5.f].CGPath;
_border.lineWidth = 3
border = CAShapeLayer() border.strokeColor = yourColor border.fillColor = nil border.lineDashPattern = [4, 2] self.layer.addSublayer(border)
Pour ceux d'entre vous qui travaillent dans Swift, cette extension de classe sur UIView facilite les choses. Ceci était basé sur la réponse de sunshineDev.
Pour l'utiliser:
la source
addDashedBorder()
pendantdidMoveToSuperview()
que je pensais que la mise en page automatique serait terminée et que la taille du cadre serait correcte, mais ce n'était pas le cas. La largeur de la bordure en pointillés dépasse la largeur de la vue. La ligne en pointillé est si belle au fait! Leself.frame.size
n'est pas correct.Swift 3 :
Utilisation dans un storyboard (en tant que classe personnalisée) ou directement dans le code:
Résultat:
la source
En me basant sur ce que Prasad G a suggéré, j'ai créé une méthode dans une classe UIImage Extras avec les éléments suivants:
Il est important de souligner que si vous définissez la position de votre forme comme (0,0), le coin inférieur de la bordure sera placé au centre de l'image, c'est pourquoi je l'ai défini sur: (frameSize.width / 2, frameSize .hauteur / 2)
J'utilise ensuite ma méthode pour obtenir la bordure en pointillés à l'aide de l'UIImage de mon UIImageView et j'ajoute CAShapeLayer en tant que sous-couche de la couche UIImageView:
la source
Utilisez la méthode CGContextSetLineDash ().
Je pense que cela vous sera utile.
la source
Voici une sous-classe UIView qui peut fonctionner pour n'importe quel projet, elle fonctionne également pour les vues rondes :
De cette façon, vous pouvez modifier à partir du Storyboard comme ceci:
Une paire de résultats:
la source
Pour cela, vous devez ajouter CAShapeLayer pour cet objet particulier
la source
Swift 4.2
Basé sur la réponse de rmooney en tant
UIView
qu'extension avec des paramètres configurables avec des valeurs par défaut définies.la source
shapeLayer.lineJoin = CAShapeLayerLineJoin.round
devrait êtreyourViewBorder.lineJoin = kCALineJoinRound
Version Swift de la réponse QuartzCore.
L'
CAShapeLayer
approche fonctionne, mais l'approche QuartzCore est meilleure pour gérer un rechargement de vue de table, si leUIView
est à l'intérieur d'une cellule.Pour l'image, vous pouvez utiliser quelque chose comme ça (c'est vraiment petit):
J'ai tendance à préférer le vecteur aux PNG lorsque je peux m'en tirer:
Images.xcassets
, créez unNew Image Set
appelé dottedPatternScale Factors
enSingle Vector
la source
Pour Xamarin.iOS bordure pointillée / pointillée.
la source
Dans Swift 3
la source
C'est si vous le vouliez dans Swift 2
la source
essayez le code ci-dessous
pour un comme ci-dessous
la source
Pour Swift 5
Comment ajouter
Comment supprimer à nouveau la bordure
la source
J'ai fini par créer un IB Designable en utilisant une partie de l'implémentation @Chris:
CurvedDashedBorderUIVIew.h:
CurvedDashedBorderUIVIew.m:
puis configurez-le simplement dans le xib / storyboard:
la source
Solution Swift avec classe personnalisée fonctionnant avec mise en page automatique
personnalisé de @Iain Smith
la source
Vous pouvez simplement créer une classe IBDesignable comme ceci:
Ensuite, sous-classez simplement votre vue avec BorderedView de Xcode. De cette façon, vous pouvez définir la couleur et la largeur de la bordure très facilement à partir du générateur d'interface!
la source
} et appelez cette fonction dans viewdidLoad () avec un délai:
la source
• Swift 5
• Fonctionne avec la mise en page automatique
• Fonctionne avec le rayon du coin
la source
Dans swift 4, j'ai créé une extension UIView avec la fonction suivante:
la source
Si vous voulez que cela fonctionne avec cornerRadius, essayez ceci
la source
Swift 5+
Comment utiliser:
la source