Perdoe minha ignorância, mas eu uso UILabels o tempo todo e gostaria de saber se você poderia apontar um "por exemplo".
daveMac
1
myLabel.numberOfLines = 0oferece um rótulo de várias linhas que respeitará os caracteres de quebra de linha. No geral, gosto de usar UITextFieldporque é mais flexível. Por exemplo, você pode detectar facilmente em qual caractere um usuário tocou ao trabalhar com um UITextField, não acho que você possa fazer isso com um UILabel. As visualizações de texto também possuem muitos outros recursos interessantes.
John Erck
7
Outra maneira é usaroption+8
atulkhatri
3
Lembre-se de usar 'u' maiúsculo se você usar strings localizáveis: \ U2022
Nikolaj Nielsen
1
Swift é ligeiramente diferente, "\ u {2022}"
anders
80
apenas adicione " • "
Até eu estava procurando algo assim para mim textView. O que eu fiz, apenas anexar a string acima com a minha string e passá-la para o meu textView, o mesmo pode ser feito labelstambém.
• Funcionou para mim. Eu tinha * no Xcode, acabei de copiar / substituir usando • e funcionou bem para o meu Label. Substituí "Label" por •
Brian
46
Aqui está uma boa solução com 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"}
Confira este link, fiz uma visualização personalizada para formatar texto com marcadores / outros símbolos / imagem (usando a propriedade attributeText de UILabel) como símbolo de item 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}}
Se você deseja alinhar o recuo do texto para os marcadores também, pode usar o seguinte método que cria um NSAttributedStringcom as propriedades de recuo e espaçamento adequados:
E você pode usar esse método da seguinte maneira, passando um NSArraycom os textos e desde que já tenha um 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];
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)
Se você votar negativamente. Ao menos tenha a cortesia de dizer o porquê.
ScottyBlades
Acho que o motivo é porque sua solução não é a ideal. Usar o ponto de código Unicode é o melhor.
Robert J. Clegg
Obrigado pela resposta atenciosa. Por que o ponto Unicode é melhor?
ScottyBlades
Porque, se o desenvolvedor precisasse fazer isso várias vezes, em diferentes telas ou projetos (não no mesmo período), isso os beneficiaria mais, sabendo qual é o valor do ponto de código. Assim, não sendo necessário ir e refinar a resposta acima ou local semelhante, para copiá-la. Bem, essa é a minha opinião sobre isso de qualquer maneira.
Robert J. Clegg
1
@ RobertJ.Clegg Acabei de atualizar minha resposta para fornecer uma opção reutilizável. Você pode me dar um exemplo de quando uma string de ponto de código torna o marcador mais reutilizável do que uma string de ponto de marcador direto?
ScottyBlades
0
Se alguém estiver procurando um texto textview com marcadores como eu, abaixo está a resposta. A propósito, funciona apenas para texto estático.
•Better experience -Refer a friendandHow to Play \n•Tournaments performance improvement\n• UI/UX Improvements\n•Critical bug fixes
Atribuí o texto acima para textview. Funcionou como planejado para mim.
UILabel
s não tratam seu texto como HTML.ALT+8 = •
Respostas:
Talvez use o ponto de código Unicode para o caractere de marcador em sua string?
Objective-c
Swift 4
fonte
myLabel.numberOfLines = 0
oferece um rótulo de várias linhas que respeitará os caracteres de quebra de linha. No geral, gosto de usarUITextField
porque é mais flexível. Por exemplo, você pode detectar facilmente em qual caractere um usuário tocou ao trabalhar com umUITextField
, não acho que você possa fazer isso com umUILabel
. As visualizações de texto também possuem muitos outros recursos interessantes.option+8
apenas adicione
" • "
Até eu estava procurando algo assim para mim
textView
. O que eu fiz, apenas anexar a string acima com a minha string e passá-la para o meutextView
, o mesmo pode ser feitolabels
também.Eu respondi isso para o futuro Viewer.
fonte
Aqui está uma boa solução com Swift
Adicionar atributos de marcadores
Aqui está o resultado:
fonte
No Swift 4 , usei "•" com a nova linha
Resultado:
fonte
In swift 3.1
fonte
Confira este link, fiz uma visualização personalizada para formatar texto com marcadores / outros símbolos / imagem (usando a propriedade attributeText de UILabel) como símbolo de item de lista (Swift 3.0) https://github.com/akshaykumarboth/SymbolTextLabel-iOS- Rápido
fonte
Se você deseja alinhar o recuo do texto para os marcadores também, pode usar o seguinte método que cria um
NSAttributedString
com as propriedades de recuo e espaçamento adequados:E você pode usar esse método da seguinte maneira, passando um
NSArray
com os textos e desde que já tenha umUILabel
:fonte
Sim. Copie e cole o seguinte marcador:
•
O compilador do Swift pode interpretar e exibir o marcador conforme desejado no Xcode, nada mais é necessário.Reuso
resultado
Matriz reutilizável
resultado
fonte
Se alguém estiver procurando um texto textview com marcadores como eu, abaixo está a resposta. A propósito, funciona apenas para texto estático.
Atribuí o texto acima para textview. Funcionou como planejado para mim.
fonte
Aqui está a solução de @krunal refatorada para a
NSAttributedString
extensão Swift 5 :fonte