Pardonnez mon ignorance mais j'utilise tout le temps des UILabels et je me demande si vous pourriez indiquer un "par exemple".
daveMac
1
myLabel.numberOfLines = 0vous obtient une étiquette multiligne qui respectera les caractères de saut de ligne. En général, j'aime bien l'utiliser UITextFieldcar il est plus flexible. Par exemple, vous pouvez facilement détecter le caractère sur lequel un utilisateur a tapé lorsqu'il travaille avec a UITextField, je ne pense pas que vous puissiez le faire avec a UILabel. Les vues de texte ont également de nombreuses autres fonctionnalités intéressantes.
John Erck
7
Une autre façon est d'utiliseroption+8
atulkhatri
3
N'oubliez pas d'utiliser un «u» majuscule si vous utilisez des chaînes localisables: \ U2022
Nikolaj Nielsen
1
Swift est légèrement différent, "\ u {2022}"
anders le
80
il suffit d'ajouter " • "
Même moi, je cherchais quelque chose comme ça pour mon textView. Ce que j'ai fait, ajoutez simplement la chaîne ci-dessus avec ma chaîne et passez-la à mon textView, la même chose peut être faite pour labelsaussi.
• A travaillé pour moi. J'ai eu * dans Xcode que je viens de copier / remplacer en utilisant • et cela a bien fonctionné pour mon étiquette J'ai remplacé "Label" par •
Brian
46
Voici une belle solution avec Swift
let label =UILabel()
label.frame =CGRect(x:40, y:100, width:280, height:600)
label.textColor =UIColor.lightGray
label.numberOfLines =0let arrayString =["Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.","Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.","Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.","Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."]
label.attributedText =add(stringList: arrayString, font: label.font, bullet:"")self.view.addSubview(label)
Dans Swift 4, j'ai utilisé "•" avec une nouvelle ligne
@IBOutlet weak var bulletLabel:UILabel!let arrayOfLines =["Eat egg for protein","You should Eat Ghee","Wheat is with high fiber","Avoid to eat Fish "]forvaluein arrayOfLines {
bulletLabel.text = bulletLabel.text!+" • "+value+"\n"}
Consultez ce lien, j'ai créé une vue personnalisée pour formater le texte avec des puces / autres symboles / image (en utilisant la propriété attributeText de UILabel) comme symbole d'élément de liste (Swift 3.0)
https://github.com/akshaykumarboth/SymbolTextLabel-iOS- Rapide
importUIKitclassViewController:UIViewController{@IBOutletvar symbolView:SymbolTextLabel!var testString ="Understanding the concept of sales"var bulletSymbol ="\u{2022}"var fontsize:CGFloat=18override func viewDidLoad(){super.viewDidLoad()//First way // Dynamically creating SymbolTextLabel objectlet symbolTextLabel =SymbolTextLabel(frame:CGRect(x:0, y:0, width:0, height:0))
symbolTextLabel.setText(text: testString, symbolCode: bulletSymbol)//setting text and symbol of text item
symbolTextLabel.setFontSize(textSize: fontsize)// setting font size//symbolTextLabel.setSpacing(spacing: 5) // setting space between symbol and textself.view.addSubview(symbolTextLabel)//second way // from storyboard or interface builder
symbolView.setText(text: testString, symbolCode: bulletSymbol)//setting text and symbol of text item
symbolView.setFontSize(textSize: fontsize)// setting font size//symbolView.setSpacing(spacing: 5) // setting space between symbol and text}}
Si vous souhaitez également aligner le texte en retrait pour les puces, vous pouvez utiliser la méthode suivante qui génère un NSAttributedStringavec les propriétés d'indentation et d'espacement appropriées:
Et vous pouvez utiliser cette méthode comme suit, en passant un NSArrayavec les textes et à condition que vous ayez déjà un UILabel:
NSArray*stringArray =@[@"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",@"Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.",@"Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.",@"Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."];
label.attributedText =[self attributedStringForBulletTexts:stringArray
withFont:label.font
bulletString:@"•"
indentation:15
lineSpacing:2
paragraphSpacing:10
textColor:UIColor.blackColor
bulletColor:UIColor.grayColor];
Oui. Copiez et collez la puce suivante: •le compilateur de Swift peut interpréter et afficher la puce comme vous le souhaitez dans Xcode, rien d'autre n'est nécessaire.
extension ArraywhereElement==String{var bulletList:String{var po =""for(index, item)inself.enumerated(){if index !=0{
po +="\n"}
po +=.bullet + item
}return po
}}print(["get apples","get oranges","get a bannana"].bulletList)
Si vous votez contre. Au moins, ayez la courtoisie de dire pourquoi.
ScottyBlades
Je pense que la raison est que votre solution n'est pas optimale. Il est préférable d'utiliser le point de code Unicode.
Robert J. Clegg
Merci pour la réponse réfléchie. Pourquoi le point Unicode est-il meilleur?
ScottyBlades
Parce que, si le développeur avait besoin de le faire plusieurs fois, sur différents écrans ou projets (pas dans la même période), il en profiterait davantage, en sachant quelle est la valeur du point de code. Ainsi, pas besoin d'aller et d'affiner la réponse ci-dessus ou un endroit similaire, pour la copier. Eh bien, c'est ce que je pense de toute façon.
Robert J. Clegg
1
@ RobertJ.Clegg Je viens de mettre à jour ma réponse pour fournir une option réutilisable. Pouvez-vous me donner un exemple de cas où une chaîne de points de code rend la puce plus réutilisable qu'une chaîne de points de puce directe?
ScottyBlades
0
Si vous recherchez du texte textview avec des puces comme moi, voici la réponse. Au fait, cela ne fonctionne que pour le texte statique.
•Better experience -Refer a friendandHow to Play \n•Tournaments performance improvement\n• UI/UX Improvements\n•Critical bug fixes
J'ai attribué le texte ci-dessus à textview. Cela a fonctionné comme prévu pour moi.
UILabel
s ne traite pas leur texte comme du HTML.ALT+8 = •
Réponses:
Peut-être utiliser le point de code Unicode pour le caractère de puce dans votre chaîne?
Objectif c
Swift 4
la source
myLabel.numberOfLines = 0
vous obtient une étiquette multiligne qui respectera les caractères de saut de ligne. En général, j'aime bien l'utiliserUITextField
car il est plus flexible. Par exemple, vous pouvez facilement détecter le caractère sur lequel un utilisateur a tapé lorsqu'il travaille avec aUITextField
, je ne pense pas que vous puissiez le faire avec aUILabel
. Les vues de texte ont également de nombreuses autres fonctionnalités intéressantes.option+8
il suffit d'ajouter
" • "
Même moi, je cherchais quelque chose comme ça pour mon
textView
. Ce que j'ai fait, ajoutez simplement la chaîne ci-dessus avec ma chaîne et passez-la à montextView
, la même chose peut être faite pourlabels
aussi.J'ai répondu à cela pour le futur spectateur.
la source
Voici une belle solution avec Swift
Ajouter des attributs de puce
Voici le résultat:
la source
Dans Swift 4, j'ai utilisé "•" avec une nouvelle ligne
Production:
la source
Dans Swift 3.1
la source
Consultez ce lien, j'ai créé une vue personnalisée pour formater le texte avec des puces / autres symboles / image (en utilisant la propriété attributeText de UILabel) comme symbole d'élément de liste (Swift 3.0) https://github.com/akshaykumarboth/SymbolTextLabel-iOS- Rapide
la source
Si vous souhaitez également aligner le texte en retrait pour les puces, vous pouvez utiliser la méthode suivante qui génère un
NSAttributedString
avec les propriétés d'indentation et d'espacement appropriées:Et vous pouvez utiliser cette méthode comme suit, en passant un
NSArray
avec les textes et à condition que vous ayez déjà unUILabel
:la source
Oui. Copiez et collez la puce suivante:
•
le compilateur de Swift peut interpréter et afficher la puce comme vous le souhaitez dans Xcode, rien d'autre n'est nécessaire.Réutilisation
production
Tableau réutilisable
production
la source
Si vous recherchez du texte textview avec des puces comme moi, voici la réponse. Au fait, cela ne fonctionne que pour le texte statique.
J'ai attribué le texte ci-dessus à textview. Cela a fonctionné comme prévu pour moi.
la source
Voici la solution de @krunal refactorisée en
NSAttributedString
extension Swift 5 :la source