Perdona mi ignorancia pero uso UILabels todo el tiempo y me pregunto si podrías señalar un "por ejemplo".
daveMac
1
myLabel.numberOfLines = 0obtiene una etiqueta de varias líneas que respetará los caracteres de salto de línea. Aunque en general me gusta usarlo UITextFieldporque es más flexible. Por ejemplo, puede detectar fácilmente en qué carácter ha tocado un usuario cuando trabaja con un UITextField, no creo que pueda hacerlo con un UILabel. Las vistas de texto también tienen muchas otras características interesantes.
John Erck
7
Otra forma es utilizaroption+8
atulkhatri
3
Recuerde usar 'u' mayúscula si usa cadenas localizables: \ U2022
Nikolaj Nielsen
1
Swift es ligeramente diferente, "\ u {2022}"
anders
80
solo agrega " • "
Incluso yo estaba buscando algo como esto para mi textView. Lo que hice, solo agregue la cadena anterior con mi cadena y pásala a mi textView, también se puede hacer lo labelsmismo.
• Trabajó para mi. Tenía * en Xcode. Acabo de copiar / reemplazar usando • y funcionó bien para mi Etiqueta. Reemplacé "Etiqueta" con •
Brian
46
Aquí hay una buena solución con 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)
@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"}
Consulte este enlace, hice una vista personalizada para formatear texto con viñetas / otros símbolos / imagen (usando la propiedad attributeText de UILabel) como símbolo de elemento de lista (Swift 3.0)
https://github.com/akshaykumarboth/SymbolTextLabel-iOS- Rápido
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 también desea alinear la sangría del texto para los puntos de viñeta, puede usar el siguiente método que crea una NSAttributedStringcon las propiedades de sangría y espaciado adecuadas:
Y puede usar ese método de la siguiente manera, pasando un NSArraycon los textos y siempre que ya tenga 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];
Si. Copie y pegue la siguiente viñeta: •El compilador de Swift puede interpretar y mostrar la viñeta como desee dentro de Xcode, no se necesita nada más.
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 vota en contra. Al menos tenga la cortesía de decir por qué.
ScottyBlades
Creo que la razón se debe a que su solución no es óptima. Lo mejor es utilizar el punto de código Unicode.
Robert J. Clegg
Gracias por la atenta respuesta. ¿Por qué es mejor el punto Unicode?
ScottyBlades
Porque, si el desarrollador necesita hacer esto varias veces, en diferentes pantallas o proyectos (no en el mismo período de tiempo), se beneficiaría más al saber cuál es el valor del punto de código. Por lo tanto, no es necesario ir y multar la respuesta anterior o un lugar similar para copiarlo. Bueno, eso es lo que pienso de todos modos.
Robert J. Clegg
1
@ RobertJ.Clegg Acabo de actualizar mi respuesta para proporcionar una opción reutilizable. ¿Puede darme un ejemplo de cuándo una cadena de puntos de código hace que la viñeta sea más reutilizable que una cadena de viñetas directa?
ScottyBlades
0
Si alguien busca texto de vista de texto con viñetas como yo, a continuación se encuentra la respuesta. Por cierto, solo funciona con texto estático.
•Better experience -Refer a friendandHow to Play \n•Tournaments performance improvement\n• UI/UX Improvements\n•Critical bug fixes
He asignado el texto anterior a la vista de texto. Funcionó como estaba previsto para mí.
UILabel
s no tratan su texto como HTML.ALT+8 = •
Respuestas:
¿Quizás usar el punto de código Unicode para el carácter de viñeta en su cadena?
C objetivo
Rápido 4
fuente
myLabel.numberOfLines = 0
obtiene una etiqueta de varias líneas que respetará los caracteres de salto de línea. Aunque en general me gusta usarloUITextField
porque es más flexible. Por ejemplo, puede detectar fácilmente en qué carácter ha tocado un usuario cuando trabaja con unUITextField
, no creo que pueda hacerlo con unUILabel
. Las vistas de texto también tienen muchas otras características interesantes.option+8
solo agrega
" • "
Incluso yo estaba buscando algo como esto para mi
textView
. Lo que hice, solo agregue la cadena anterior con mi cadena y pásala a mitextView
, también se puede hacer lolabels
mismo.Respondí esto para el futuro espectador.
fuente
Aquí hay una buena solución con Swift
Agregar atributos de viñeta
Aquí está el resultado:
fuente
En Swift 4 he usado "•" con New Line
Salida:
fuente
En Swift 3.1
fuente
Consulte este enlace, hice una vista personalizada para formatear texto con viñetas / otros símbolos / imagen (usando la propiedad attributeText de UILabel) como símbolo de elemento de lista (Swift 3.0) https://github.com/akshaykumarboth/SymbolTextLabel-iOS- Rápido
fuente
Si también desea alinear la sangría del texto para los puntos de viñeta, puede usar el siguiente método que crea una
NSAttributedString
con las propiedades de sangría y espaciado adecuadas:Y puede usar ese método de la siguiente manera, pasando un
NSArray
con los textos y siempre que ya tenga unUILabel
:fuente
Si. Copie y pegue la siguiente viñeta:
•
El compilador de Swift puede interpretar y mostrar la viñeta como desee dentro de Xcode, no se necesita nada más.Reutilizar
salida
Matriz reutilizable
salida
fuente
Si alguien busca texto de vista de texto con viñetas como yo, a continuación se encuentra la respuesta. Por cierto, solo funciona con texto estático.
He asignado el texto anterior a la vista de texto. Funcionó como estaba previsto para mí.
fuente
Aquí está la solución de @krunal refactorizada en la
NSAttributedString
extensión Swift 5 :fuente