Je travaille avec la TableView et j'espérais ajouter une couleur d'arrière-plan au texte de la cellule sélectionnée. Quelque chose comme ceci:
L'image représente une cellule, la couleur d'arrière-plan est séparée. C'est ce qui est nécessaire. P>
J'ai essayé de faire ce qui suit mais il ajoute une couleur d'arrière-plan à la cellule entière ou au texte uniquement. P>
La séparation entre est le plus important, l'ajout d'un arrière-plan applique une couleur à la cellule entière, ce qui n'est pas Recherché. P>
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { //Highlighting text - Add saving text let cell = tableView.cellForRow(at: indexPath) print("You selected cell number: \(indexPath.row)!") cell?.textLabel?.textColor = .yellow cell?.textLabel?.backgroundColor = .yellow // Is not desired outcome }
4 Réponses :
Votre image montre un Si vous essayez de changer la couleur de fond , il devrait être p> ( https://www.youtube.com/watch?v= DCC5MKKPFUA . Cela vous aidera) P> textlabel code> avec
jaune code> couleur de fond et
noir code> couleur texte.
cellule? .TextLabel? .textcolor = uicolor.yellow code> est utilisé pour modifier la couleur du texte et non la couleur d'arrière-plan. P>
let searchString = "Lorem Lorem"
let baseString = "Ipsum Ipsum Ipsum Ipsum Ipsum Ipsum Ipsum Ipsum"
let attributed = NSMutableAttributedString(string: baseString)
do
{
let regex = try! NSRegularExpression(pattern: searchString,options: .caseInsensitive)
for match in regex.matches(in: baseString, options: NSRegularExpression.MatchingOptions(), range: NSRange(location: 0, length: baseString.characters.count)) as [NSTextCheckingResult] {
attributed.addAttribute(NSBackgroundColorAttributeName, value: UIColor.yellow, range: match.range)
}
self.txtView.attributedText = attributed
}
Bonjour, cela ajoute une couleur de fond jaune à la cellule entière, ce qui n'est pas ce que je veux. J'ai besoin que la couleur de fond soit spécifique au texte. Tout comme dans la photo!
@ N.der Oh, maintenant je l'obtiens. Vous avez oublié de mentionner que votre label remplit toute votre cellule. Je suppose que votre étiquette a la même taille que la cellule entière? En utilisant cela, votre cellule a toujours un arrière-plan blanc, mais le problème est que votre étiquette remplit la cellule entière et la modification de la couleur de fond de l'étiquette, il ressemble à la couleur de la cellule modifiée. Pour cela, vous devez utiliser attribuétext
Pouvez-vous expliquer la recherchetring et son utilisation
Vous devez d'abord ajouter une variable globale pour identifier quelle cellule est sélectionnée.
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { var cell= (tableView.dequeueReusableCell(withIdentifier: "cellIdentifier") as! YourCell) if self.selectedIndex == indexPath.row { cell?.textLabel?.backgroundColor = UIColor.yellow } else { cell?.textLabel?.backgroundColor = UIColor.yellow } return cell! }
Bonjour, cela ajoute une couleur de fond jaune à la cellule entière, ce qui n'est pas ce que je veux. J'ai besoin que la couleur de fond soit spécifique au texte. Tout comme dans la photo! La séparation entre est la clé.
L'utilisateur thetiger est correct. Tout ce que vous avez besoin pour apprendre est de définir De ce que je peux me rappeler, le nom de l'attribut est le suivant: attributétext d'étiquette code>. J'ai travaillé sur des tonnes d'applications bibliques avec une même fonctionnalité de verset. P>
nsbackgroundColorattributename code>. Bonne chance! P>
Modifier le code ci-dessous à utiliser selon votre condition
cell?.textLabel?.attributedText = self.decorateText(myTxtOne: "Use this", myTxtTwo: " Code") func decorateText(myTxtOne:String, myTxtTwo:String)->NSAttributedString{ let textAttributeOne = [NSAttributedStringKey.foregroundColor: UIColor.white, NSAttributedStringKey.backgroundColor: UIColor.blue, NSAttributedStringKey.font: UIFont(name: "Poppins-Regular", size: 12.0)!] as [NSAttributedStringKey : Any] let textAttributeTwo = [NSAttributedStringKey.foregroundColor: UIColor.white, NSAttributedStringKey.backgroundColor: UIColor.yellow, NSAttributedStringKey.font: UIFont(name: "Poppins-Regular", size: 12.0)!] as [NSAttributedStringKey : Any] let textPartOne = NSMutableAttributedString(string: myTxtOne, attributes: textAttributeOne) let textPartTwo = NSMutableAttributedString(string: myTxtTwo, attributes: textAttributeTwo) let textCombination = NSMutableAttributedString() textCombination.append(textPartOne) textCombination.append(textPartTwo) return textCombination }
Une bonne réponse fournit une explication. S'il vous plaît, ne postez pas de réponses sur le code seulement.
Ce n'est pas comme ça ce que tu penses. Pour être plus clair, essayez de régler la couleur d'arrière-plan sur
cellule code> et
textlabel code>, puis voir la différence.
En fait, vous avez besoin de
attribuétext code> et non du texte code> uniquement. Donc, Google pour
attribuétext code> pour l'étiquette et il résoudra votre problème. Votre titre de question est trompeur.
cellule? .TextLabel? .BackgroundColor = .Yellow code> ne définit pas la cellule entière. Il ne définit que l'étiquette. Bien sûr, il pourrait être que l'étiquette couvre la majeure partie de la cellule.