Várias cores em um NSString
ou NSMutableStrings
não são possíveis. Então, eu ouvi um pouco sobre o NSAttributedString
que foi introduzido no iPad SDK 3.2 (ou em torno de 3.2) e está disponível no iPhone a partir do iPhone SDK 4.0 beta .
Eu gostaria de ter uma string que tem três cores.
O motivo de eu não usar 3 NSStrings separadas, é porque o comprimento de cada uma das três NSAttributedString
substrings muda frequentemente e, portanto, eu preferiria não usar nenhum cálculo para reposicionar 3 NSString
objetos separados .
Se for possível usar NSAttributedString
como faço o seguinte - (se não for possível com a cadeia NSAttributed, como você faria):
Edit:
Lembre-se, @"first"
, @"second"
e @"third"
será substituído por outras cordas a qualquer momento. Portanto, o uso de valores NSRange codificados não funcionará.
fonte
Respostas:
Ao construir strings atribuídas, prefiro usar a subclasse mutável, apenas para manter as coisas mais limpas.
Dito isto, veja como criar uma sequência atribuída de três cores:
digitado em um navegador. implementador de advertência
Obviamente, você não vai codificar em intervalos como este. Talvez você possa fazer algo como:
fonte
NSAttributedString
. No entanto, existem coisas de código aberto, como OHAttributedLabel .kCTForegroundColorAttributeName
vez deNSForegroundColorAttributeName
.A pergunta já está respondida ... mas eu queria mostrar como adicionar sombra e alterar a fonte com NSAttributedString também, para que, quando as pessoas pesquisem esse tópico, não precisem continuar procurando.
Aqui está uma versão Swift ...
Aviso! Isso funciona para 4s.
Para 5s, é necessário alterar todos os valores flutuantes para valores duplos (porque o compilador ainda não está funcionando corretamente)
Enumeração rápida para a escolha da fonte:
Matriz rápida para acesso ao enum (necessário porque o enum não pode usar '-'):
Função de texto atribuída rápida:
primeira e última extensão usada para encontrar intervalos em uma matriz de cadeias:
novas cores:
minha substituição de macro:
meu criador de botões com texto atribuído:
meu fabricante de UIView / UILabel com texto atribuído, sombra e cantos arredondados:
adicionar sombra genérica:
ver extensão para ver o estilo:
a visualização real carregou a função:
fonte
Eu acho que é uma maneira muito conveniente de usar
regular expressions
para encontrar um intervalo para a aplicação de atributos. Foi assim que eu fiz:Eu estava procurando por uma lista de atributos disponíveis e não os encontrei aqui e na primeira página de uma referência de classe. Então eu decidi postar aqui informações sobre isso.
Atributos padrão
As seqüências atribuídas oferecem suporte aos seguintes atributos padrão para texto. Se a chave não estiver no dicionário, use os valores padrão descritos abaixo.
Guia de programação NSAttributedString
Uma referência de classe completa está aqui .
fonte
Esta solução funcionará para qualquer comprimento
fonte
Eu escrevi helper para adicionar atributos facilmente:
https://github.com/shmidt/MASAttributes
Você também pode instalar através do CocoaPods:
pod 'MASAttributes', '~> 1.0.0'
fonte
Desde o iOS 7, você pode usar
NSAttributedString
com sintaxe HTML:Você precisa adicionar o arquivo "string.html" ao seu projeto e o conteúdo do html pode ser assim:
Agora, você pode usar
NSAttributedString
como quiser, mesmo sem o arquivo HTML, como por exemplo:Fonte
fonte
Eu sempre achei que trabalhar com strings atribuídas era um processo incrivelmente longo e tedioso.
Então, eu criei um Mac App que cria todo o código para você.
https://itunes.apple.com/us/app/attributed-string-creator/id730928349?mt=12
fonte
Uma solução mais fácil com extensão de string atribuída.
Experimente e veja (Testado no Swift 3 e 4)
Aqui está o resultado esperado:
fonte
No Swift 4:
fonte
Você pode carregar uma
HTML
sequência atribuída daSwift
seguinte maneiraPara carregar um
html
arquivo fromhttp://sketchytech.blogspot.in/2013/11/creating-nsattributedstring-from-html.html
E configure a string de acordo com o atributo necessário .... siga isto ..
http://makeapppie.com/2014/10/20/swift-swift-using-attributed-strings-in-swift/
fonte
Criei uma biblioteca que facilita muito isso. Confira o ZenCopy.
Você pode criar objetos de estilo e / ou defini-los como chaves para referência posterior. Como isso:
Então, você pode facilmente construir strings E estilizá-las E ter parâmetros :)
Você também pode estilizar as coisas facilmente com pesquisas regex!
Isso estilizará todas as palavras com '@' na frente, com o estilo 'token'. (por exemplo, @jpmcglone)
Preciso ainda fazê-lo funcionar w / tudo
NSAttributedString
tem para oferecer, mas eu achofontName
,fontSize
e capa colorida a maior parte dele. Espere muitas atualizações em breve :)Eu posso ajudá-lo a começar com isso, se precisar. Também procurando feedback, por isso, se facilitar a sua vida, eu diria que a missão foi cumprida.
fonte
fonte
Para resolver esse tipo de problema, criei uma biblioteca rapidamente, chamada Atributika.
Você pode encontrá-lo aqui https://github.com/psharanda/Atributika
fonte
Swift 4
Lista de atributos, consulte aqui NSAttributedStringKey no Apple Docs
fonte
Maneira super fácil de fazer isso.
Para mais detalhes, clique aqui; https://github.com/iOSTechHub/AttributedString
fonte