現(xiàn)在的UI設(shè)計(jì)越來越個性化鸭你,原始的tableView樣式在他們眼里覺得不好看,得加上圓角和分區(qū)如圖
@“望穿秋水”單行cell加圓角叁怪,如果在cell編寫的時候就加了圓角還好蕊连,可是如果是之前是直角形狀,要改成圓角那就麻煩很多了祝闻,所以重點(diǎn)來了:
只需要重寫tableview的代理方法
- (void)tableView:(UITableView*)tableView willDisplayCell:(UITableViewCell*)cell forRowAtIndexPath:(NSIndexPath*)indexPath{
? ? if([cellrespondsToSelector:@selector(tintColor)]) {
? ? ? ? CGFloatcornerRadius =10.f;
? ? ? ?cell.backgroundColor = UIColor.clearColor;
? ? ? ? CAShapeLayer *layer = [[CAShapeLayer alloc] init];
? ? ? ?CGMutablePathRef pathRef = CGPathCreateMutable();
? ? ? ? CGRectbounds =CGRectInset(cell.bounds,0,0);
? ? ? ? if(indexPath.row==0&& indexPath.row== [tableViewnumberOfRowsInSection:indexPath.section]-1) {
//如果既是第一行也是最后一行占卧,加全部圓角
? ? ? ? ? ? CGPathAddRoundedRect(pathRef,nil, bounds, cornerRadius, cornerRadius);
? ? ? ? }elseif(indexPath.row==0) {
//第一行只畫左上和右上的圓角
? ? ? ? ? ? CGPathMoveToPoint(pathRef,nil,CGRectGetMinX(bounds),CGRectGetMaxY(bounds));
?? ? ? ? ? CGPathAddArcToPoint(pathRef,nil,CGRectGetMinX(bounds),CGRectGetMinY(bounds),CGRectGetMidX(bounds),CGRectGetMinY(bounds), cornerRadius);
?? ?CGPathAddArcToPoint(pathRef,nil,CGRectGetMaxX(bounds),CGRectGetMinY(bounds),CGRectGetMaxX(bounds),CGRectGetMidY(bounds), cornerRadius);
? ? ? ? ? ? CGPathAddLineToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMaxY(bounds));
? ? ? ? }elseif(indexPath.row== [tableViewnumberOfRowsInSection:indexPath.section]-1) {
//最后一行只畫左上和右上的圓角
? ? ? ? ? ? CGPathMoveToPoint(pathRef,nil,CGRectGetMinX(bounds),CGRectGetMinY(bounds));
? ? ? ? ?CGPathAddArcToPoint(pathRef,nil,CGRectGetMinX(bounds),CGRectGetMaxY(bounds),CGRectGetMidX(bounds),CGRectGetMaxY(bounds), cornerRadius);
?? ? ? ? ? ?CGPathAddArcToPoint(pathRef,nil,CGRectGetMaxX(bounds),CGRectGetMaxY(bounds),CGRectGetMaxX(bounds),CGRectGetMidY(bounds), cornerRadius);
? ? ? ? ? ? CGPathAddLineToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMinY(bounds));
? ? ? ? }else{
? ? ? ? ? ? CGPathAddRect(pathRef,nil, bounds);
? ? ? ? }
? ? ? ? layer.path= pathRef;
? ? ? ? CFRelease(pathRef);
? ? ? ? //顏色修改
? ? ? ? layer.fillColor=WhiteColor.CGColor;
? ? ? ? layer.strokeColor=WhiteColor.CGColor;
? ? ? ? UIView*testView = [[UIViewalloc]initWithFrame:bounds];
? ? ? ? [testView.layerinsertSublayer:layeratIndex:0];
? ? ? ? testView.backgroundColor = UIColor.clearColor;
? ? ? ? cell.backgroundView= testView;
? ? }
}
即可。
但是如果是還有組頭呢联喘,這個怎么辦呢华蜒,不要著急,在tableView的代理方法里面一樣有這個分區(qū)頭的方法
- (void)tableView:(UITableView*)tableView willDisplayHeaderView:(nonnullUIView*)view forSection:(NSInteger)section{
}
以此類推和cell執(zhí)行一樣的方法就可以實(shí)現(xiàn)豁遭。如圖深圳新東方科技公司就是分區(qū)頭
第一次在簡書上分享叭喜,寫的不好,還望見諒蓖谢。