+(void)roundCorners:(UIRectCorner)corners forView:(UIView *)view { UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:view.bounds byRoundingCorners:corners cornerRadii:CGSizeMake(10.0, 10.0)]; CAShapeLayer *maskLayer = [CAShapeLayer layer]; maskLayer.frame = view.bounds; maskLayer.path = maskPath.CGPath; view.layer.mask = maskLayer; } +(void)roundCornersForSelectedBackgroundViewForTableView:(UITableView *)tableView cell:(UITableViewCell *)cell indexPath:(NSIndexPath *)indexPath { NSUInteger rows = [tableView numberOfRowsInSection:indexPath.section]; if (rows == 1) { [[self class] roundCorners:UIRectCornerAllCorners forView:cell.selectedBackgroundView]; } else if (indexPath.row == 0) { [[self class] roundCorners:UIRectCornerTopLeft | UIRectCornerTopRight forView:cell.selectedBackgroundView]; } else if (indexPath.row == rows-1) { [[self class] roundCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight forView:cell.selectedBackgroundView]; } else { [[self class] roundCorners:0 forView:cell.selectedBackgroundView]; } } +(void)deferredRoundCornersForSelectedBackgroundViewForTableView:(UITableView *)tableView cell:(UITableViewCell *)cell indexPath:(NSIndexPath *)indexPath { int64_t delayInSeconds = 0; dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ [[self class] roundCornersForSelectedBackgroundViewForTableView:tableView cell:cell indexPath:indexPath]; }); } - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { // cell.selectedBackgroundView.frame is not sized correctly yet, so rounding the corners has to be deferred briefly [[self class] deferredRoundCornersForSelectedBackgroundViewForTableView:tableView cell:cell indexPath:indexPath]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString* identifityString = @"cell"; YQOptionTableViewCell* cell = (YQOptionTableViewCell*)[tableView dequeueReusableCellWithIdentifier:identifityString]; if(!cell) { cell = [[[YQOptionTableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:identifityString] autorelease]; cell.selectedBackgroundView = [[UIView alloc]initWithFrame:cell.frame]; cell.selectedBackgroundView.backgroundColor = [UIColor redColor]; }
UITableViewStyleGrouped下自定义selectedBackgroundView
猜你喜欢
转载自zani.iteye.com/blog/1909009
今日推荐
周排行