上一篇中介紹了UITableViewCell視覺差滾動效果们豌。本篇文章介紹UITableViewCell的圓角效果,確切的說是,UITableView的每個section四個角的圓角效果震肮。
不想讀文字的同學可以直接看代碼.效果圖如下:
cornerRadius.gif
步驟
備注
:以下操作全部是在- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
方法中進行的
<1> 設(shè)置cell的背景色透明
關(guān)于為什么必須設(shè)置背景色為透明而账,原因如下:
- 之所以設(shè)置為透明胰坟,是因為cell背景色backGroundColor是直接設(shè)置在UITableViewCell上面的,位于cell的第四層
- backGroundView位于cell的第三層泞辐,也就是位于backGroundColor之上
- 我們所要做的操作是在cell的第三層——backGroundView上
- 第三層會擋住第四層笔横,如果第四層設(shè)置了顏色,那么將來cell的圓角部分會露出第四層的顏色咐吼,也就是背景色
所以吹缔,必須設(shè)置cell的背景色為透明色! - 另外:
- 第二層是UITableViewCellContentView锯茄,默認就是透明的厢塘,無需設(shè)置
- 第一層是UITableViewLabel茶没,也就是cell.textLabel
<2> 創(chuàng)建CGMutablePathRef,保存繪制的路徑信息
關(guān)于繪圖晚碾,里面用到了下面這個函數(shù):
CGPathAddArcToPoint(CGMutablePathRef __nullable path,
const CGAffineTransform * __nullable m, CGFloat x1, CGFloat y1,
CGFloat x2, CGFloat y2, CGFloat radius)
<3> 創(chuàng)建layer抓半,并給layer添加上面的路徑信息,進行渲染格嘁。
cell 的層次結(jié)構(gòu)
cell的層次結(jié)構(gòu)
文/VV木公子(簡書作者)
PS:如非特別說明琅关,所有文章均為原創(chuàng)作品,著作權(quán)歸作者所有讥蔽,轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)涣易,并注明出處!如果您是iOS開發(fā)者冶伞,或者對本篇文章感興趣新症,請關(guān)注本人,后續(xù)會更新更多相關(guān)文章响禽!敬請期待徒爹!