Swift自定義UITableViewCell背景色
本文實(shí)例為大家分享了Swift自定義UITableViewCell背景色的具體代碼,供大家參考,具體內(nèi)容如下
效果
前言
前段時(shí)間在整理課件 《UITableView》 章節(jié)的時(shí)候,看著單元格選中時(shí)的背景顏色覺得特別扭,系統(tǒng)給的顏色太過單調(diào),當(dāng)時(shí)想整理一篇修改單元格選中樣式的文章,但一直沒有時(shí)間,現(xiàn)在閑下來,終于可以完成了。在實(shí)際開發(fā)中,系統(tǒng)提供的樣式不能滿足需求,可能大家想到的最直接的方式就是定制,自定義。沒錯(cuò),這里修改表格視圖單元格選中時(shí)的背景顏色也是通過自定義單元格的方法實(shí)現(xiàn),當(dāng)然也可以通過代理方法實(shí)現(xiàn),如果有興趣,大家可以研究一下。
實(shí)現(xiàn)
在UITableViewCell的子類文件(CustomTableViewCell.swift)中實(shí)現(xiàn)如下方法即可
override func setSelected(selected: Bool, animated: Bool) { ? ? super.setSelected(selected, animated: animated) ? ? // Configure the view for the selected state ? ? if selected { ? ? ? ? self.backgroundColor = UIColor.orangeColor() ? ? }else { ? ? ? ? self.backgroundColor = UIColor.whiteColor() ? ? } }
運(yùn)行工程,可能你會(huì)發(fā)現(xiàn),當(dāng)你點(diǎn)擊單元格的時(shí)候,選中樣式依舊是系統(tǒng)樣式,如下圖:
這是什么原因?qū)е碌哪兀?/strong>打開視圖層級(jí),我們就會(huì)發(fā)現(xiàn),其實(shí)我們已經(jīng)設(shè)置成功了,只是被遮住了,如下圖:
那應(yīng)該如何解決呢?其實(shí)很簡(jiǎn)單,只需要修改cell的selectionStyle屬性即可,如下所示:
cell.selectionStyle = UITableViewCellSelectionStyle.None
現(xiàn)在,我們就完成了自定義單元格選中樣式了,特簡(jiǎn)單吧?
延伸
有時(shí)可能會(huì)有這種需求,就是我不需要選中背景色,但是我想在點(diǎn)擊某個(gè)單元格的時(shí)候閃一下,即背景色突變一下就OK,像這種需求又改如何解決呢?
首先,我們需要實(shí)現(xiàn)如下方法,當(dāng)單元格不管是選中也好,未選中也罷,都設(shè)為白色。
override func setSelected(selected: Bool, animated: Bool) { ? ? super.setSelected(selected, animated: animated) ? ? // Configure the view for the selected state ? ? if selected { ? ? ? ? self.backgroundColor = UIColor.whiteColor() ? ? }else { ? ? ? ? self.backgroundColor = UIColor.whiteColor() ? ? } }
其次,在代理方法中,做如下操作:
func tableView(tableView: UITableView, didHighlightRowAtIndexPath indexPath: NSIndexPath) { ? ? let cell = tableView.cellForRowAtIndexPath(indexPath) ? ? // change the cell background color ? ? cell?.backgroundColor = UIColor.redColor() }
除了在代理方法中操作,還可以在自定義單元格中實(shí)現(xiàn),效果一致,只是無需通過代理方法實(shí)現(xiàn),具體實(shí)現(xiàn)如下:
override func setHighlighted(highlighted: Bool, animated: Bool) { ? ? if highlighted { ? ? ? ? self.backgroundColor = UIColor.redColor() ? ? }else { ? ? ? ? self.backgroundColor = UIColor.whiteColor() ? ? } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Swift使用enum抹平數(shù)組元素差異實(shí)例詳解
這篇文章主要為大家介紹了Swift使用enum抹平數(shù)組元素差異實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11NotificationCenter類實(shí)現(xiàn)原理
這篇文章主要為大家介紹了NotificationCenter類實(shí)現(xiàn)原理源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03舉例講解Swift編程中switch...case語句的用法
這篇文章主要介紹了Swift編程中switch...case語句的用法,其中fallthrough關(guān)鍵字在switch語句中的使用是重點(diǎn),需要的朋友可以參考下2016-04-04因?yàn)橐粋€(gè)Crash引發(fā)對(duì)Swift構(gòu)造器的思考分析
這篇文章主要給大家介紹了關(guān)于因?yàn)橐粋€(gè)Crash引發(fā)對(duì)Swift構(gòu)造器的思考分析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Swift具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10如何使用Swift來實(shí)現(xiàn)一個(gè)命令行工具的方法
這篇文章主要介紹了如何使用Swift來實(shí)現(xiàn)一個(gè)命令行工具,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05