顏色疊加算法轻抱,UIButton的高亮色設(shè)置

理論:https://www.zhihu.com/question/21609387

最近在做一個(gè)類似微信公眾號(hào)下部導(dǎo)航的需求奕剃,產(chǎn)品要求導(dǎo)航按鈕背景色可以配置渣窜,設(shè)計(jì)師要求點(diǎn)擊時(shí)背景色要疊加一個(gè)透明度為5%的#000000純黑色吏垮。因而有了本文障涯。
如上述理論,顏色疊加在前在后膳汪,得到的結(jié)果是不一樣的唯蝶。使用的時(shí)候請(qǐng)注意區(qū)分。
代碼:

// forwordColor 是上層顏色遗嗽,backwordColor是下層顏色
-(UIColor *)colorWithForwordColor:(UIColor *)forwordColor backwordColor:(UIColor *)backwordColor{
    const CGFloat *components = CGColorGetComponents(forwordColor.CGColor);
    const CGFloat *components2 = CGColorGetComponents(backwordColor.CGColor);
    
    CGFloat red1 = components[0];
    CGFloat green1 = components[1];
    CGFloat blue1 = components[2];
    CGFloat alpha1 = components[3];
    
    CGFloat red2 = components2[0];
    CGFloat green2 = components2[1];
    CGFloat blue2 = components2[2];
    CGFloat alpha2 = components2[3];
    
    CGFloat alpha = 1-(1-alpha1)*(1-alpha2);
    CGFloat red = (alpha1*red1+(1-alpha1)*red2*alpha2)/alpha;
    CGFloat green = (alpha1*green1+(1-alpha1)*green2*alpha2)/alpha;
    CGFloat blue = (alpha1*blue1+(1-alpha1)*blue2*alpha2)/alpha;
    
    UIColor *rColor = [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
    return rColor;
}

注意一點(diǎn):這里傳入的UIColor必須是UIDeviceRGBColor(UIExtendedSRGBColorSpace)粘我,類似[UIColor BlackColor];這種是灰度顏色(不知是不是準(zhǔn)確,應(yīng)該是GrayColorSpace),是無(wú)法取到RGBA分量的痹换。

得到顏色之后就可以使用如下耳熟能詳?shù)拇a從顏色生成一個(gè)UIImage對(duì)象

- (UIImage*) createImageWithColor: (UIColor*) color
{
    CGRect rect=CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);
    UIImage *theImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return theImage;
}

之后用UIButtonsetBackgroundImage:forState即可實(shí)現(xiàn)點(diǎn)擊高亮態(tài)的顏色變化征字。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市娇豫,隨后出現(xiàn)的幾起案子匙姜,更是在濱河造成了極大的恐慌,老刑警劉巖冯痢,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氮昧,死亡現(xiàn)場(chǎng)離奇詭異框杜,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)袖肥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門咪辱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人椎组,你說(shuō)我怎么就攤上這事梧乘。” “怎么了庐杨?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵选调,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我灵份,道長(zhǎng)仁堪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任填渠,我火速辦了婚禮弦聂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘氛什。我一直安慰自己莺葫,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布枪眉。 她就那樣靜靜地躺著捺檬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪贸铜。 梳的紋絲不亂的頭發(fā)上堡纬,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音蒿秦,去河邊找鬼烤镐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛棍鳖,可吹牛的內(nèi)容都是我干的炮叶。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼渡处,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼镜悉!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起骂蓖,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤积瞒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后登下,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體茫孔,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡叮喳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了缰贝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片馍悟。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖剩晴,靈堂內(nèi)的尸體忽然破棺而出锣咒,到底是詐尸還是另有隱情,我是刑警寧澤赞弥,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布毅整,位于F島的核電站,受9級(jí)特大地震影響绽左,放射性物質(zhì)發(fā)生泄漏悼嫉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一拼窥、第九天 我趴在偏房一處隱蔽的房頂上張望戏蔑。 院中可真熱鬧,春花似錦鲁纠、人聲如沸总棵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)情龄。三九已至,卻和暖如春候味,著一層夾襖步出監(jiān)牢的瞬間刃唤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工白群, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人硬霍。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓帜慢,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親唯卖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子粱玲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • *7月8日上午 N:Block :跟一個(gè)函數(shù)塊差不多,會(huì)對(duì)里面所有的內(nèi)容的引用計(jì)數(shù)+1拜轨,想要解決就用__block...
    炙冰閱讀 2,473評(píng)論 1 14
  • 打印View所有子視圖 layoutSubviews調(diào)用的調(diào)用時(shí)機(jī) 當(dāng)視圖第一次顯示的時(shí)候會(huì)被調(diào)用當(dāng)這個(gè)視圖顯示到...
    hyeeyh閱讀 497評(píng)論 0 3
  • 1. 打印View所有子視圖 po [[self view]recursiveDescription] 2. la...
    Hurricane_4283閱讀 951評(píng)論 0 2
  • 心情明信片 感恩:在tx的第二年抽减,由于部門架構(gòu)的調(diào)整,我換了一個(gè)新領(lǐng)導(dǎo)橄碾,那時(shí)正趕上年底卵沉。新領(lǐng)導(dǎo)按常例找每個(gè)人年底談...
    MeierLiang閱讀 222評(píng)論 0 0
  • 題目:世界上的第二個(gè)我 朋友啊 你從哪里來(lái)往 可曾見過(guò)第二個(gè)我的模樣 她不似我這般溫暖颠锉、陽(yáng)光 也不似我這般徘徊、迷...
    雪馨的小天地閱讀 239評(píng)論 0 2