O problema que estou tendo é que quero ser capaz de alterar o textColor de determinado texto em um TextView. Estou usando uma string concatenada e só quero as strings que estou acrescentando ao texto do TextView. Parece que o que eu quero usar é NSMutableAttributedString
, mas não estou encontrando recursos de como usar isso no Swift. O que eu tenho até agora é algo assim:
let string = "A \(stringOne) with \(stringTwo)"
var attributedString = NSMutableAttributedString(string: string)
textView.attributedText = attributedString
A partir daqui, sei que preciso encontrar o intervalo de palavras que precisam ter seu textColor alterado e, em seguida, adicioná-los à string atribuída. O que eu preciso saber é como encontrar as strings corretas de attributeString e, em seguida, alterar sua textColor.
Como eu tenho uma classificação muito baixa, não posso responder minha própria pergunta, mas aqui está a resposta que encontrei
Eu encontrei minha própria resposta traduzindo da tradução de algum código de
Alterar atributos de substrings em um NSAttributedString
Aqui está o exemplo de implementação em Swift:
let string = "A \(stringOne) and \(stringTwo)"
var attributedString = NSMutableAttributedString(string:string)
let stringOneRegex = NSRegularExpression(pattern: nameString, options: nil, error: nil)
let stringOneMatches = stringOneRegex.matchesInString(longString, options: nil, range: NSMakeRange(0, attributedString.length))
for stringOneMatch in stringOneMatches {
let wordRange = stringOneMatch.rangeAtIndex(0)
attributedString.addAttribute(NSForegroundColorAttributeName, value: UIColor.nameColor(), range: wordRange)
}
textView.attributedText = attributedString
Já que estou querendo mudar o textColor de várias Strings, farei uma função auxiliar para lidar com isso, mas isso funciona para mudar o textColor.
fonte
Respostas:
Vejo que você respondeu à pergunta um pouco, mas para fornecer uma maneira um pouco mais concisa, sem usar regex para responder à pergunta do título:
Para alterar a cor de um comprimento de texto, você precisa saber o índice inicial e final dos futuros caracteres coloridos na string, por exemplo
Em seguida, você converte em string atribuída e usa 'adicionar atributo' com NSForegroundColorAttributeName:
Uma lista de outros atributos padrão que você pode definir pode ser encontrada na documentação da Apple
fonte
main_string
,string_to_color
erange
nunca sofreram mutação. Considere alterá-los paralet
constantes?SWIFT 5
SWIFT 4.2
fonte
Atualização do Swift 2.1:
self.helpText
é umaUILabel
saída.fonte
O Swift 4.2 e o Swift 5 colorem partes da corda.
Uma maneira muito fácil de usar NSMutableAttributedString ao estender a String. Isso também pode ser usado para colorir mais de uma palavra em toda a string.
Adicionar novo arquivo para extensões, Arquivo -> Novo -> Arquivo Swift com nome para ex. "NSAttributedString + TextColouring" e adicione o código
Agora você pode usar globalmente em qualquer viewcontroller que desejar:
fonte
A resposta já foi dada em posts anteriores, mas eu tenho uma maneira diferente de fazer isso
Swift 3x:
Espero que isso ajude alguém!
fonte
A resposta de Chris foi uma grande ajuda para mim, então usei sua abordagem e me transformei em uma função que posso reutilizar. Isso me permite atribuir uma cor a uma substring, enquanto dou outra cor ao resto da string.
fonte
Swift 4.1
por exemplo, se você deseja alterar a fonte na NavBar:
fonte
Você pode usar esta extensão que eu testo
rápido 4.2
fonte
Swift 2.2
fonte
.CGColor
.A maneira mais fácil de rotular com estilos diferentes, como cor, fonte, etc., é usar a propriedade "Atributo" no Inspetor de atributos. Basta escolher parte do texto e alterá-lo como quiser
fonte
Com base nas respostas antes de criar uma extensão de string
Você pode passar os atributos do texto para o método
Ligar assim
fonte
Swift 4.1
Eu mudei deste In Swift 3
E isso em Swift 4.0
para Swift 4.1
Funciona bem
fonte
rápido 4.2
fonte
Para todos que procuram " Aplicando uma cor específica a várias palavras no texto ", podemos fazer isso usando NSRegularExpression
Link de referência: https://gist.github.com/aquajach/4d9398b95a748fd37e88
fonte
fonte
Com esta função simples, você pode atribuir o texto e destacar a palavra escolhida.
Você também pode alterar o UITextView para UILabel , etc.
fonte
Para alterar a cor da fonte, primeiro selecione atribuída em vez de simples como na imagem abaixo
Em seguida, você precisa selecionar o texto no campo atribuído e, em seguida, selecionar o botão de cor no lado direito dos alinhamentos. Isso mudará a cor.
fonte
Você pode usar este método. Implementei esse método em minha classe de utilitário comum para acesso global.
fonte
Se você estiver usando Swift 3x e UITextView, talvez o NSForegroundColorAttributeName não funcione (não funcionou para mim, independentemente da abordagem que tentei).
Então, depois de pesquisar um pouco, encontrei uma solução.
fonte
Uma maneira super fácil de fazer isso.
Para obter mais detalhes, clique aqui: https://github.com/iOSTechHub/AttributedString
fonte
Você precisa alterar os parâmetros do textview, não os parâmetros da string atribuída
fonte
Verifique o cocoapod Prestyler :
fonte
}
fonte
Você pode usar uma extensão simples
fonte