Je suis un tutoriel en ligne pour créer une application iOS de type magazine. J'essaie d'utiliser NSAttributedStringKey mais je reçois toujours l'erreur ci-dessous. Des idées?
C'est la ligne de code qui cause l'erreur:
let attrs = [NSAttributedStringKey.foregroundColor: color, NSAttributedStringKey.font: font] as [NSAttributedStringKey : Any]
Les projets sont probablement dans différentes versions de Swift.
Dans Swift 4, NSFontAttributeName a été remplacé par NSAttributedStringKey.font .
comme indiqué ici NSFontAttributeName vs NSAttributedStringKey.font
Besoin de confirmer si cela fonctionnera sur les versions inférieures à ios11
Vous essayez d'utiliser une API iOS 11 sur une version antérieure à iOS 11 (probablement iOS 10). Surpris que vous ayez trouvé un tutoriel utilisant déjà les fonctionnalités bêta!
En attendant, essayez ceci.
let attrs = [NSForegroundColorAttributeName: color, NSFontAttributeName: font]
et ça devrait marcher.
Le code que vous essayez d'utiliser est une nouvelle API ajoutée à iOS 11. Puisque vous utilisez Xcode 8, vous n'utilisez pas iOS 11. Vous devez donc utiliser l'API actuelle (non-bêta).
let attrs = [NSForegroundColorAttributeName: color, NSFontAttributeName: font]
Modifications de Swift 4.1 et Xcode 9.3 Valeur de clé attribuée.
let strName = "Hello Stackoverflow"
let string_to_color2 = "Hello"
let attributedString1 = NSMutableAttributedString(string:strName)
let range2 = (strName as NSString).range(of: string_to_color2)
attributedString1.addAttribute(NSAttributedStringKey.foregroundColor, value: UIColor.red , range: range2)
lblTest.attributedText = attributedString1
Bonjour sera de couleur rouge.
Cet exemple ne fonctionne que sur iOS11.
import UIKit
class VC: UIViewController {
@IBOutlet weak var usernameTxt: UITextField!
@IBOutlet weak var emailTxt: UITextField!
@IBOutlet weak var passTxt: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
setupView()
}
func setupView() {
usernameTxt.attributedPlaceholder = NSAttributedString(string: "username", attributes: [NSAttributedStringKey.foregroundColor: smackPurplePlaceholder])
emailTxt.attributedPlaceholder = NSAttributedString(string: "email", attributes: [NSAttributedStringKey.foregroundColor: smackPurplePlaceholder])
passTxt.attributedPlaceholder = NSAttributedString(string: "password", attributes: [NSAttributedStringKey.foregroundColor: smackPurplePlaceholder])
}
}