Eu tenho uma corda assim
var str = "@text1 this is good @text1"
Agora substitua text1
por outra string, digamos t 1
. Consigo substituir o texto, mas não consigo colocá-lo em negrito. Quero colocar a nova string em negrito t 1
, para que o resultado final seja:
@t 1 isso é bom @t 1
Como eu posso fazer isso?
Todos os exemplos que estou vendo estão em Objective-C, mas quero fazê-lo em Swift.
Desde já, obrigado.
ios
swift
ios8
nsmutableattributedstring
user2413621
fonte
fonte
Respostas:
Uso:
Resultado:
Esta é uma maneira simples de fazer uma combinação de textos em negrito e normais em um único rótulo, além de alguns outros métodos de bônus.
Extensão: Swift 5. *
fonte
func bold(_ text:String, _ size:CGFloat)
. Eu adicionei o tamanho ao negrito para que eu possa controlá-lo de fora. Além disso, eu perdi aAvenirNext-Medium
fonte nesta função, então levei alguns minutos para entender por que não consigo ver minha fonte. Atenção.Quando você quiser atribuí-lo a um rótulo:
fonte
editar / atualizar: Xcode 8.3.2 • Swift 3.1
Se você conhece HTML e CSS, pode usá-los para controlar facilmente o estilo da fonte, a cor e o tamanho da string atribuída da seguinte forma:
fonte
<link href=\"https://fonts.googleapis.com/css?family=Frank+Ruhl+Libre\" rel=\"stylesheet\"> <span style=\"font-family: 'Frank Ruhl Libre', sans-serif;\">שלום</span>
Se você estiver trabalhando com strings localizadas, pode não ser capaz de contar com a string em negrito sempre no final da frase. Se for esse o caso, o seguinte funciona bem:
por exemplo, a consulta "blá" não corresponde a nenhum item
fonte
Eu estendi a ótima resposta de David West para que você possa inserir uma string e dizer a ela todas as substrings que gostaria de enfatizar:
E então chame assim:
Isso irá enfatizar todas as substrings que você deseja colocar em negrito em sua determinada string
fonte
Esta é a melhor maneira que eu inventei. Adicione uma função que você pode chamar de qualquer lugar e adicione-a a um arquivo sem uma classe como Constants.swift e então você pode enfatizar palavras em qualquer string, em várias ocasiões, chamando apenas UMA LINHA de código:
Para ir em um arquivo constants.swift:
Em seguida, você pode simplesmente chamar essa linha de código para qualquer UILabel:
fonte
Com base nas excelentes respostas de Jeremy Bader e David West, uma extensão do Swift 3:
Uso:
fonte
uso....
dois centavos...
fonte
Aceitando como válida a resposta de Prajeet Shrestha neste tópico, gostaria de estender sua solução usando o Label se ele for conhecido e os traços da fonte.
Swift 4
fonte
Swift 4 e superior
Para Swift 4 e superior, essa é uma boa maneira:
No rótulo, o texto se parece com: "Oi John "
fonte
Uma maneira super fácil de fazer isso.
Para obter mais detalhes, clique aqui: https://github.com/iOSTechHub/AttributedString
fonte
apply
método com a fonte que você quiserIsso pode ser útil
fonte
Swift 3.0
Converta html em string e altere a fonte de acordo com suas necessidades.
fonte
Data("I'm a normal text and <b>this is my bold part . </b>And I'm again in the normal text".utf8)
e definir a codificação de caracteres nas opções[NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue]
Basta usar um código como este:
fonte
dois liner em swift 4:
fonte
Swift 5.1 usa em
NSAttributedString.Key
vez deNSAttributedStringKey
fonte
Para -> Pesquisar televisão por tamanho
Unilateral usando NString e seu intervalo
outro sem usar NString e seu intervalo
swift5
fonte
Melhorando a resposta de Prajeet Shrestha: -
Você pode fazer uma extensão genérica para NSMutableAttributedString que envolve menos código. Neste caso, optei por usar a fonte do sistema, mas você pode adaptá-la para inserir o nome da fonte como um parâmetro.
fonte
Você pode fazer isso usando o método personalizado simples escrito abaixo. Você deve fornecer string inteira no primeiro parâmetro e o texto em negrito no segundo parâmetro. Espero que isso ajude.
uso: initalString = Eu sou um menino
label.attributedText = getAttributedBoldString (str: initalString, boldTxt: "Boy")
string resultante = eu sou um menino
fonte