La ligne pointillée de la frontière autour de UIView
Comment puis-je ajouter de la ligne en pointillés de la frontière autour de UIView
.
Quelque chose Comme cela
- Je pense que stackoverflow.com/questions/5431035/... posez votre question
- pour une ligne en POINTILLÉ .. stackoverflow.com/q/26018302/294884
- lukagabric.com/...
Vous devez vous connecter pour publier un commentaire.
Vous pouvez définir la frontière avec ce modèle à l'aide de la Couche et le tracé de Bézier comme les exemples ci-dessous.
Objective-C
Swift 3.1
Vous pouvez également définir les différents types de design à l'aide de modèle de l'image comme l'exemple ci-dessous.
Ici vous avez à ajouter
<QuartzCore/QuartzCore>
dans le cadre du projet et de l'importer avec la ligne ci-dessous dansYourViewController.m
fichier.Une autre méthode si vous aimez les sous-couches. Dans votre vue personnalisée de l'init, mettre ce (_border est un ivar):
Et dans votre layoutsubviews, mettez ceci:
_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, c'est facile. Ceci a été basé sur sunshineDev de réponse.
Pour l'utiliser:
addDashedBorder()
pendantdidMoveToSuperview()
de la pensée mise en forme automatique serait complet et la taille de la trame est correcte, mais il ne l'était pas. La bordure pointillée de la largeur va au-delà de la largeur de la vue. La ligne en pointillés a l'air tellement bon par la manière dont! Leself.frame.size
n'est pas correct.À construire sur Prasad G a suggéré, j'ai créé une méthode à l'intérieur d'une UIImage Extras classe avec les éléments suivants:
Il est important de souligner que, si vous définissez votre forme de la position (0,0), le coin inférieur de la frontière sera placé dans le centre de l'image, c'est pourquoi je l'ai mis à: (frameSize.largeur/2,taille.hauteur/2)
Puis je utiliser ma méthode pour obtenir la bordure pointillée à l'aide de la UIImage de mon UIImageView et ajouter le CAShapeLayer comme sous-couche de la UIImageView couche:
Utilisation CGContextSetLineDash() la méthode.
Je pense qu'il sera utile pour vous.
Swift 3:
Utiliser dans un scénario (comme la classe personnalisée) ou directement dans le code:
Résultat:
Pour cela, vous devez ajouter CAShapeLayer pour cet objet particulier
Swift version de la QuartzCore réponse.
La
CAShapeLayer
approche fonctionne, mais le QuartzCore approche est préférable à la manipulation d'une Vue de la Table de rechargement, 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 vecteur sur Png quand je peux sortir avec elle:
Images.xcassets
, créer unNew Image Set
appelé dottedPatternScale Factors
àSingle Vector
Pour Xamarin.iOS en pointillés/bordure en pointillé.
Dans Swift 3
C'est, si vous vouliez Swift 2
essayer soufflet code
pour l'un comme ci-dessous
J'ai fini par créer un IB Personnalisable à l'aide de certains de @Chris de mise en œuvre:
CurvedDashedBorderUIVIew.h:
CurvedDashedBorderUIVIew.m:
puis il suffit de le configurer dans le xib/storyboard:
Swift solution avec classe personnalisée travaillé avec mise en page automatique
personnalisés à partir de @Iain Smith
Vous pouvez simplement créer un IBDesignable classe comme ceci:
Puis il suffit de la sous-classe votre point de vue avec BorderedView de Xcode.
De cette façon, vous pouvez définir la couleur de la bordure et la largeur de la bordure très facilement à partir de l'interface builder!
}
et d'appeler cette fonction dans le viewdidLoad() avec un délai de:
Swift 4.2
Basé sur rmooney de répondre en tant que
UIView
extension de paramètres configurables qui ont des valeurs par défaut définies.shapeLayer.lineJoin = CAShapeLayerLineJoin.round
devrait êtreyourViewBorder.lineJoin = kCALineJoinRound
Dans swift 4 j'ai créé une UIView extension avec la fonction suivante:
Si vous voulez que cela fonctionne avec cornerRadius ensuite, essayez ce
Pour Swift 5
Comment ajouter
Comment faire pour supprimer frontière