第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何比較UIColors?

如何比較UIColors?

iOS
呼啦一陣風(fēng) 2019-12-13 15:10:25
我想檢查UIImageView上背景的顏色設(shè)置。我試過了:if(myimage.backgroundColor == [UIColor greenColor]){...}else{...}但這是行不通的,即使我知道顏色是綠色,它也總是落在其他部分。另外,還有一種方法可以在調(diào)試控制臺(tái)中輸出當(dāng)前顏色。p [myimage backgroundColor]和po [myimage backgroundColor]不工作
查看完整描述

3 回答

?
largeQ

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊

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

        }

    }

}



查看完整回答
反對(duì) 回復(fù) 2019-12-14
?
一只斗牛犬

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊

當(dāng)比較不同模型/空間中的顏色(例如與)時(shí),isEqual:將返回。我編寫了這個(gè)UIColor擴(kuò)展,可以在比較它們之前將兩種顏色轉(zhuǎn)換為相同的顏色空間:NO#FFF[UIColor whiteColor]


- (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];

}



查看完整回答
反對(duì) 回復(fù) 2019-12-14
?
紫衣仙女

TA貢獻(xiàn)1839條經(jīng)驗(yàn) 獲得超15個(gè)贊

這可能為時(shí)已晚,但是CoreGraphics有一個(gè)更簡(jiǎn)單的API可以實(shí)現(xiàn)此目的:


CGColorEqualToColor(myColor.CGColor, [UIColor clearColor].CGColor)

就像文檔中說的那樣:


指示兩種顏色是否相等。如果兩種顏色具有相等的色彩空間和數(shù)字上相等的顏色分量,則它們是相等的。


這解決了很多麻煩和泄漏/自定義算法。



查看完整回答
反對(duì) 回復(fù) 2019-12-14
  • 3 回答
  • 0 關(guān)注
  • 525 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)