我想检查一下UIImageView的背景颜色设置。我试过了:
if(myimage.backgroundColor == [UIColor greenColor]){
...}
else{
...}
但这不起作用,即使我知道颜色是绿色的,它总是落在else部分。
另外,是否有一种方法可以在调试控制台中输出当前颜色。
p [myimage backgroundColor]
和
po [myimage backgroundColor]
不工作。
发布于 2009-06-09 14:46:43
你试过[myColor isEqual:someOtherColor]
吗?
发布于 2012-01-18 01:59:16
正如zoul在评论中指出的那样,当比较不同模型/空间中的颜色时(例如#FFF
和[UIColor whiteColor]
),isEqual:
将返回NO
。我编写了这个UIColor扩展,它在比较两种颜色之前将它们转换为相同的颜色空间:
- (BOOL)isEqualToColor:(UIColor *)otherColor {
CGColorSpaceRef colorSpaceRGB = CGColorSpaceCreateDeviceRGB();
UIColor *(^convertColorToRGBSpace)(UIColor*) = ^(UIColor *color) {
if (CGColorSpaceGetModel(CGColorGetColorSpace(color.CGColor)) == kCGColorSpaceModelMonochrome) {
const CGFloat *oldComponents = CGColorGetComponents(color.CGColor);
CGFloat components[4] = {oldComponents[0], oldComponents[0], oldComponents[0], oldComponents[1]};
CGColorRef colorRef = CGColorCreate( colorSpaceRGB, components );
UIColor *color = [UIColor colorWithCGColor:colorRef];
CGColorRelease(colorRef);
return color;
} else
return color;
};
UIColor *selfColor = convertColorToRGBSpace(self);
otherColor = convertColorToRGBSpace(otherColor);
CGColorSpaceRelease(colorSpaceRGB);
return [selfColor isEqual:otherColor];
}
发布于 2015-06-04 22:28:58
samvermette的解决方案转化为swift:
extension UIColor {
func isEqualToColor(otherColor : UIColor) -> Bool {
if self == otherColor {
return true
}
let colorSpaceRGB = CGColorSpaceCreateDeviceRGB()
let convertColorToRGBSpace : ((color : UIColor) -> UIColor?) = { (color) -> UIColor? in
if CGColorSpaceGetModel(CGColorGetColorSpace(color.CGColor)) == CGColorSpaceModel.Monochrome {
let oldComponents = CGColorGetComponents(color.CGColor)
let components : [CGFloat] = [ oldComponents[0], oldComponents[0], oldComponents[0], oldComponents[1] ]
let colorRef = CGColorCreate(colorSpaceRGB, components)
let colorOut = UIColor(CGColor: colorRef!)
return colorOut
}
else {
return color;
}
}
let selfColor = convertColorToRGBSpace(color: self)
let otherColor = convertColorToRGBSpace(color: otherColor)
if let selfColor = selfColor, otherColor = otherColor {
return selfColor.isEqual(otherColor)
}
else {
return false
}
}
}
https://stackoverflow.com/questions/970475
复制相似问题