2016-04-14 4 views
4
vergleicht

Ich versuche, Farben zu vergleichen, aber ich kann nicht die Methode verwenden, weil ich versuche, die Farbe des Hintergrunds von UICollectionViewCell zu vergleichen.Wie man eine Farbe in swift

Was ist der richtige Weg, um Farben in dieser Situation zu vergleichen?

if(cell!.layer.backgroundColor! == UIColor.redColor().CGColor) 
{ 
    cell?.layer.backgroundColor = UIColor.redColor().CGColor 
} 
+0

Es tut mir leid, wenn ich etwas fehlt bin, aber Sie können cell.backgroundColor verwenden und es an einen anderen UIColor vergleichen. Ich bin in einigen schnellen Untersuchungen darauf gestoßen, wenn Sie nur mit CGColors arbeiten, http://StackOverflow.com/a/8191171/4096655 –

+0

Das scheint nicht zu funktionieren, obwohl –

+0

http://StackOverflow.com/q/970475/2303865 –

Antwort

11

Versuchen Sie CGColorEqualToColor(_ color1: CGColor!, _ color2: CGColor!) -> Bool.

+0

CGColorEqualToColor ist in swift3 nicht mehr empfohlen – nilotic

+0

ja, benutze stattdessen '===' –

3

Ich habe mit diesem auf einem Spielplatz kommen, habe ich die Backgroundcolor-Eigenschaft des UICollectionViewCell mit einem UIColor zugeordnet und erstellt dann eine UIColor davon layer.backgroundColor CGColor Eigenschaft ist:

let blue = UIColor.blueColor() 

let collectionCell = UICollectionViewCell() 

collectionCell.backgroundColor = blue 

let cellLayerBgrndColor = UIColor(CGColor: collectionCell.layer.backgroundColor!) 

if blue == cellLayerBgrndColor { 

print("equal") // Prints equal 
} 
1
extension CGColor: Equatable { } 
public func ==(lhs: CGColor, rhs: CGColor) -> Bool { 
    return CGColorEqualToColor(lhs,rhs) 
} 
let color1 = UIColor(hue: 0, saturation: 1, brightness: 1, alpha: 1).CGColor 
let color2 = UIColor.redColor().CGColor 

print(color1 == color2) // "true\n" 
0

Sie könnten die Saiten durch den Aufruf der .description Eigenschaft wie produziert vergleichen:

// UIColor.red.description -> "UIExtendedSRGBColorSpace 1 0 0 1" 
if(cell!.layer.backgroundColor!.description == UIColor.red.description) 
{ 
    cell?.layer.backgroundColor = UIColor.redColor().CGColor 
} 

Aber beachten Sie, dass Farbraum auch müssen übereinstimmen.

0

In Swift 3 Sie können einfach die Farben vergleichen mit ===

let c1 = UIColor.red.cgColor 
let c2 = UIColor.red.cgColor 

if c1 === c2 { 
    print('Equal') 
} 
Verwandte Themen