Swift animations, NSAttributedString |
Bienvenue invité ( Connexion | Inscription )
Swift animations, NSAttributedString |
11 Sep 2019, 08:52
Message
#1
|
|
Macbidouilleur d'argent ! Groupe : Membres Messages : 659 Inscrit : 7 May 2015 Membre no 195 224 |
Bonjour,
Je cherche à faire une petite application. N'ayant aucune notion pour créer une interface graphique en C, je me suis lancé dans les outils que propose Apple, à savoir Swift/XCode Y'a pas à dire, la syntaxe de leur language est SUPER lourdingue ! Bref. J'avances pas à pas et j'aimerais maintenant animer une portion de texte d'un UILabel (une syllabe) Dans l'idéal, je voudrais :
Voilà ce que j'ai écrit : Dans ma classe qui contient ces UILabel, je définis mes couleurs et mes modifications de textes (je passe par une fonction car je n'ai pas trouvé comment faire une ombre dans la déclaration) : Code let colors = [ "unreaded": UIColor(red: 66/255, green: 66/255, blue: 66/255, alpha: 1), "readed": UIColor(red: 233/255, green: 128/255, blue: 43/255, alpha: 1) ] var readedStyle :[NSAttributedString.Key : Any] = [:] func defStyles(size :textSize) { self.readedStyle[NSAttributedString.Key.foregroundColor] = self.colors["readed"] let shadow = NSShadow() shadow.shadowOffset = CGSize(width: 2, height: 2) shadow.shadowColor = UIColor.darkGray shadow.shadowBlurRadius = 2 self.readedStyle[NSAttributedString.Key.shadow] = shadow } Ensuite, j'ai ajouté une extension à la classe UILabel : Code extension UILabel { // startPos : // endPos : // style : list of styles to apply to range func posTextStyleChange (endPos :Int, startPos: Int, style :[NSAttributedString.Key : Any]) { // Change text color to <style> between <startPos> and <endPos> let range = NSRange(location: startPos, length: endPos-startPos) let attribute = NSMutableAttributedString.init(string: self.text!) //attribute.addAttribute(NSAttributedString.Key.foregroundColor, value: UIColor.yellow, range: range) attribute.addAttributes(style, range: range) self.attributedText = attribute UIView.animate(withDuration: 0.2, delay: 0, usingSpringWithDamping: 0.2, initialSpringVelocity: 5, options: [.autoreverse, .curveEaseInOut], animations: { () -> Void in self.transform = CGAffineTransform(scaleX: 1.3, y: 1.3) }, completion: { (result: Bool) -> Void in self.transform = .identity }) } } Evidemment, dans ce code, mon animation s'applique à tout le UILabel. Je ne vois pas comment je pourrais ne l'appliquer qu'à une partie. Si vous coonnaissez une solution, je suis tout ouïe. En revanche, je ne comprends pas du tout pourquoi l'ombre ne fonctionne pas du tout comme prévu :
Une idée ? Merci pour votre aide Ce message a été modifié par Anard - 11 Sep 2019, 09:14. -------------------- "iMack" : GA-H97M-D3H, Intel i5 4460, 16Go DDR3,
"Portable" : HP Pavilion DV3500, Intel core2 T6400, 4Go DDR3, NVidia GeForce 9300M, HDD 256Go / Grub2 - Gentoo-Xfce |
|
|
18 Sep 2019, 23:32
Message
#2
|
|
Macbidouilleur d'argent ! Groupe : Membres Messages : 659 Inscrit : 7 May 2015 Membre no 195 224 |
Merci beaucoup à toi.
Le principe de la transpilation ( ), c'est de convertir le swift ou autre en JS pour ensuite l'executer sur n'importe quelle plateforme, si j'ai bien compris. Mais il a toujours besoin d'un navigateur pour interprter le résultat ou est-ce qu'il peut générer un interface graphique tout seul ? J'imagine que la gestion Bluetooth (ou l'accès à un autre matériel physique) dépend toujours de la plateforme. Enfin, il faut que je continue à lire tout ça. Aussi, dans mes recherches, je suis tombé sur un dépôt conçu pour moi : https://github.com/PureSwift Principalement Cacao qui semble transcrire UIKit pour Linux. Si je comprends bien ceci, le code généré est directement utilisable sur iOS, tvOS et Linux (exactement ce dont j'ai besoin) Code #if os(iOS) || os(tvOS) import UIKit let _ = UIApplicationMain(0, nil, nil, NSStringFromClass(AppDelegate.self)) #else import Cacao var options = CacaoOptions() options.windowName = "CacaoDemo" UIApplicationMain(delegate: AppDelegate.shared, options: options) #endif Resterait uniquement à adapter la réception avec BluetoothLinux. Encore que là-aussi, s'il utilisent les même noms de classes et le même fonctionnement que la bibliothèque Apple, ça simplifie la migration. Ils proposent égalemet des bibliothèques pour Android au cas où. Pour courronner le tout, Cacao arrive dans un package Xcode qui compile immédiatement ! Je sais que c'est pas le top, mais pour le moment il m'aide encore beaucoup à y voir un peu moins flou... Ceci dit, je ne sais pas à quel stade de développement en sont ces bibliothèques et j'ai du mal à trouver des retours d'utilisation. Ce message a été modifié par Anard - 18 Sep 2019, 23:46. -------------------- "iMack" : GA-H97M-D3H, Intel i5 4460, 16Go DDR3,
"Portable" : HP Pavilion DV3500, Intel core2 T6400, 4Go DDR3, NVidia GeForce 9300M, HDD 256Go / Grub2 - Gentoo-Xfce |
|
|
Nous sommes le : 18th April 2024 - 17:59 |