123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- //
- // UITableViewCell+cornerRadius.m
- // SmartLightForBigFish
- //
- // Created by coderYK on 2017/11/16.
- // Copyright © 2017年 RD. All rights reserved.
- //
- #import "UITableViewCell+cornerRadius.h"
- @implementation UITableViewCell (cornerRadius)
- - (void)rds_setCornerRadius:(CGFloat)radius atTableView:(UITableView *)tableView forRowAtIndexPath:(NSIndexPath *)indexPath {
-
- if ([self respondsToSelector:@selector(tintColor)]) {
-
- CGFloat cornerRadius = radius;
- self.backgroundColor = UIColor.clearColor;
-
- CAShapeLayer *layer = [[CAShapeLayer alloc] init];
- CGMutablePathRef pathRef = CGPathCreateMutable();
- CGRect bounds = CGRectInset(self.bounds, 0, 0);
-
- BOOL addLine = NO;
-
- if (indexPath.row == 0 && indexPath.row == [tableView numberOfRowsInSection:indexPath.section]-1) {
- // 当前section只有一行
- CGPathAddRoundedRect(pathRef, nil, bounds, cornerRadius, cornerRadius);
-
- } else if (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));
- addLine = YES;
-
- } else if (indexPath.row == [tableView numberOfRowsInSection: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);
- addLine = YES;
- }
-
- layer.path = pathRef;
- CFRelease(pathRef);
-
- //颜色修改
- layer.fillColor = [UIColor whiteColor].CGColor;
- layer.strokeColor = tableView.separatorColor.CGColor;
-
- if (addLine == YES) {
-
- CALayer *lineLayer = [[CALayer alloc] init];
- CGFloat lineHeight = .3f;
- lineLayer.frame = CGRectMake(CGRectGetMinX(bounds)+10, bounds.size.height-lineHeight, bounds.size.width-10, lineHeight);
- lineLayer.backgroundColor = tableView.separatorColor.CGColor;
- [layer addSublayer:lineLayer];
- }
-
- UIView *testView = [[UIView alloc] initWithFrame:bounds];
- [testView.layer insertSublayer:layer atIndex:0];
- testView.backgroundColor = UIColor.clearColor;
- self.backgroundView = testView;
- }
- }
- - (void)rds_setBottomCornerRadius:(CGFloat)radius atTableView:(UITableView *)tableView forRowAtIndexPath:(NSIndexPath *)indexPath {
-
- if ([self respondsToSelector:@selector(tintColor)]) {
-
- CGFloat cornerRadius = radius;
- self.backgroundColor = UIColor.clearColor;
-
- CAShapeLayer *layer = [[CAShapeLayer alloc] init];
- CGMutablePathRef pathRef = CGPathCreateMutable();
- CGRect bounds = CGRectInset(self.bounds, 0, 0);
-
- BOOL addLine = NO;
-
- if (indexPath.row == [tableView numberOfRowsInSection: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));
- addLine = YES;
-
- } else {
-
- CGPathAddRect(pathRef, nil, bounds);
- addLine = YES;
- }
-
- layer.path = pathRef;
- CFRelease(pathRef);
-
- //颜色修改
- layer.fillColor = [UIColor whiteColor].CGColor;
- layer.strokeColor = tableView.separatorColor.CGColor;
-
- if (addLine == YES) {
-
- CALayer *lineLayer = [[CALayer alloc] init];
- CGFloat lineHeight = .3f;
- lineLayer.frame = CGRectMake(CGRectGetMinX(bounds)+10.6, bounds.size.height-lineHeight, bounds.size.width-10.6, lineHeight);
- lineLayer.backgroundColor = tableView.separatorColor.CGColor;
- [layer addSublayer:lineLayer];
- }
-
- UIView *testView = [[UIView alloc] initWithFrame:bounds];
- [testView.layer insertSublayer:layer atIndex:0];
- testView.backgroundColor = UIColor.clearColor;
- self.backgroundView = testView;
- }
- }
- - (void)rds_addSeparatorForCellAtFirstOrBottomColor:(UIColor *)separatorColor atTableView:(UITableView *)tableView forRowAtIndexPath:(NSIndexPath *)indexPath {
-
- if (indexPath.row == 0 && indexPath.row == [tableView numberOfRowsInSection:indexPath.section]-1) {
- // 当前section只有一行
-
- } else if (indexPath.row == 0) {
- // 在第一行设置上圆角
-
- } else if (indexPath.row == [tableView numberOfRowsInSection:indexPath.section]-1) {
-
- }
- }
- @end
|