ios - the - xcode mac




Comment puis-je utiliser UIColorFromRGB dans Swift? (12)

C'est une belle extension pour UIColor. Vous pouvez utiliser des valeurs enum (hex, chaîne) et des valeurs de chaîne directes lorsque vous créez des objets UIColor.

L'extension que nous méritons https://github.com/ioramashvili/UsefulExtensions/blob/master/Extensions.playground/Pages/UIColor.xcplaygroundpage/Contents.swift

En Objective-C, nous utilisons ce code pour définir des codes de couleur RVB pour les vues:

#define UIColorFromRGB(rgbValue)        
[UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

view.backgroundColor=UIColorFromRGB(0x209624);

Comment puis-je l'utiliser dans Swift?


Cela a fonctionné pour moi rapidement. Essaye ça

bottomBorder.borderColor = UIColor (red: 255.0/255.0, green: 215.0/255.0, blue: 60/255.0, alpha: 1.0).CGColor

Dans Swift3, si vous commencez avec une couleur que vous avez déjà choisie, vous pouvez obtenir la valeur RGB en ligne ( http://imagecolorpicker.com ) et utiliser les valeurs définies comme UIColor. Cette solution les implémente en arrière-plan:

    @IBAction func blueBackground(_ sender: Any) {
        let blueColor = UIColor(red: CGFloat(160/255), green: CGFloat(183.0/255), blue: CGFloat(227.0/255), alpha: 1)
        view.backgroundColor = blueColor

@Vadym a mentionné ceci ci-dessus dans les commentaires et il est important de définir le CGFloat avec un seul point décimal


J'ai utilisé ce qui suit dans swift.

let appRedColor = UIColor(red: 200.0/255.0, green: 16.0/255.0, blue: 46.0/255.0, alpha: 1.0)
let appSilverColor = UIColor(red: 236.0/255.0, green: 236.0/255.0, blue: 236.0/255.0, alpha: 1.0)
let appWhiteColor = UIColor(red: 255.0/255.0, green: 255.0/255.0, blue: 255.0/255.0, alpha: 1.0)
let appNavyColor = UIColor(red: 19.0/255.0, green: 41.0/255.0, blue: 75.0/255.0, alpha: 1.0)

Je peux voir son déjà été répondu, mais j'espère encore un paquebot aidera de meilleure façon.

import UIKit

let requiredColor = UIColor(red: CGFloat((rgbValue & 0xFF0000) >> 16)/255, 
                            green: CGFloat((rgbValue & 0x00FF00) >> 8)/255, 
                            blue: CGFloat(rgbValue & 0x0000FF)/255, alpha :1)

Mise à jour:: Modifications effectuées selon l'exemple expliqué par Auteur de la question pour fournir des valeurs hexadécimales


Je voulais mettre

cell.backgroundColor = UIColor.colorWithRed(125/255.0, green: 125/255.0, blue: 125/255.0, alpha: 1.0)  

mais cela n'a pas fonctionné.

J'ai donc utilisé:
Pour Swift

cell.backgroundColor = UIColor(red: 0.5, green: 0.5, blue: 0.5, alpha: 1.0)  

Donc, c'est la solution de contournement que j'ai trouvée.


Le moyen le plus simple d'ajouter des couleurs par programmation consiste à utiliser ColorLiteral .

Ajoutez simplement la propriété ColorLiteral comme indiqué dans l'exemple, Xcode vous demandera une liste complète de couleurs que vous pouvez choisir. L'avantage de le faire est un moindre code, ajouter des valeurs HEX ou RVB . Vous obtiendrez également les couleurs récemment utilisées dans le storyboard.

Exemple: self.view.backgroundColor = ColorLiteral


Pour Xcode 9 , utilisez UIColor avec des valeurs RVB.

shareBtn.backgroundColor = UIColor( red: CGFloat(92/255.0), green: CGFloat(203/255.0), blue: CGFloat(207/255.0), alpha: CGFloat(1.0) )

Aperçu:

Voir la documentation Apple supplémentaire sur UIColor .


Vous ne pouvez pas utiliser de macros complexes comme #define UIColorFromRGB(rgbValue) dans swift. Le remplacement de la macro simple dans swift est des constantes globales comme

let FADE_ANIMATION_DURATION = 0.35

Les macros complexes qui acceptent les paramètres ne sont toujours pas supportées par swift. vous pourriez utiliser des fonctions à la place

Les macros complexes sont utilisées en C et Objective-C mais n'ont pas de contrepartie dans Swift. Les macros complexes sont des macros qui ne définissent pas de constantes, y compris des macros parenthèses et fonctionnelles. Vous utilisez des macros complexes en C et Objective-C pour éviter les contraintes de vérification de type ou pour éviter de retaper de grandes quantités de code standard. Cependant, les macros peuvent rendre le débogage et le refactoring difficiles. Dans Swift, vous pouvez utiliser des fonctions et des génériques pour obtenir les mêmes résultats sans aucun compromis. Par conséquent, les macros complexes qui sont dans les fichiers source C et Objective-C ne sont pas mises à la disposition de votre code Swift.

Extrait d' Utilisation de Swift avec du cacao et objectif C

Check @Nate Cooks réponds pour la version Swift de cette fonction à utiliser ici


Vous pouvez utiliser ceci:

//The color RGB #85CC4B
let newColor = UIColor(red: CGFloat(0x85)/255
                      ,green: CGFloat(0xCC)/255
                      ,blue: CGFloat(0x4B)/255
                      ,alpha: 1.0)

solution pour le format argb:

//  UIColorExtensions.swift
import UIKit
extension UIColor {

    convenience init(argb: UInt) {
        self.init(
            red: CGFloat((argb & 0xFF0000) >> 16) / 255.0,
            green: CGFloat((argb & 0x00FF00) >> 8) / 255.0,
            blue: CGFloat(argb & 0x0000FF) / 255.0,
            alpha: CGFloat((argb & 0xFF000000) >> 24) / 255.0
        )
    }
}

usage:

var clearColor: UIColor = UIColor.init(argb: 0x00000000)
var redColor: UIColor = UIColor.init(argb: 0xFFFF0000)

Si vous partez d'une chaîne (pas hexadécimale), il s'agit d'une fonction qui prend une chaîne hexadécimale et renvoie une UIColor.
(Vous pouvez entrer des chaînes hexadécimales avec l'un des formats suivants: #ffffff ou ffffff )

Usage:

var color1 = hexStringToUIColor("#d3d3d3")

Swift 4:

func hexStringToUIColor (hex:String) -> UIColor {
    var cString:String = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()

    if (cString.hasPrefix("#")) {
        cString.remove(at: cString.startIndex)
    }

    if ((cString.count) != 6) {
        return UIColor.gray
    }

    var rgbValue:UInt32 = 0
    Scanner(string: cString).scanHexInt32(&rgbValue)

    return UIColor(
        red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,
        green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,
        blue: CGFloat(rgbValue & 0x0000FF) / 255.0,
        alpha: CGFloat(1.0)
    )
}

Swift 3:

func hexStringToUIColor (hex:String) -> UIColor {
    var cString:String = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()

    if (cString.hasPrefix("#")) {
        cString.remove(at: cString.startIndex)
    }

    if ((cString.characters.count) != 6) {
        return UIColor.gray
    }

    var rgbValue:UInt32 = 0
    Scanner(string: cString).scanHexInt32(&rgbValue)

    return UIColor(
        red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,
        green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,
        blue: CGFloat(rgbValue & 0x0000FF) / 255.0,
        alpha: CGFloat(1.0)
    )
}

Swift 2:

func hexStringToUIColor (hex:String) -> UIColor {
    var cString:String = hex.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet() as NSCharacterSet).uppercaseString

    if (cString.hasPrefix("#")) {
      cString = cString.substringFromIndex(cString.startIndex.advancedBy(1))
    }

    if ((cString.characters.count) != 6) {
      return UIColor.grayColor()
    }

    var rgbValue:UInt32 = 0
    NSScanner(string: cString).scanHexInt(&rgbValue)

    return UIColor(
        red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,
        green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,
        blue: CGFloat(rgbValue & 0x0000FF) / 255.0,
        alpha: CGFloat(1.0)
    )
}


Source: arshad/gist:de147c42d7b3063ef7bc







swift