IOS开发小技巧

IOS配置某个圆角大小

iOS开发中各种圆角也随处可见,最简单给控件添加圆角的方式就是给视图的layer设置corner属性了:

self.view.layer.cornerRadius = 5.f;  
self.view.layer.masksToBounds = YES;  

这种方式无法配置圆角数量(只能添加view的四个角全为圆角),无法配置某个圆角大小.

这个问题我们可以用UIBezierPath来完美解决,示例代码如下:

UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.view.bounds byRoundingCorners:UIRectCornerTopLeft | UIRectCornerBottomLeft cornerRadii:CGSizeMake(20, 0)];

CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];

maskLayer.frame = self.view.bounds;

maskLayer.path = maskPath.CGPath;

self.view.layer.mask = maskLayer;

self.view.layer.cornerRadius = 5.f;
self.view.layer.masksToBounds = YES;

想要配置某个角为圆角的话,只需要指定对应的UIRectCorner即可,UIRectCorner有五个值:

UIRectCornerAllCorners 全角
UIRectCornerTopLeft    左上角
UIRectCornerTopRight   右上角
UIRectCornerBottomLeft 左下角
UIRectCornerBottomRight 右下角

UITableView分割线顶到头

我们在使用tableview时会发现分割线的左边会短一些,通常可以使用setSeparatorInset:UIEdgeInsetsZero 来解决。但是升级到XCode6之后,在iOS8里发现没有效果。下面给出解决办法:

  1. 第一步

    if ([self.tableView respondsToSelector:@selector(setSeparatorInset:)]) {

    [self.tableView setSeparatorInset:UIEdgeInsetsZero];
    

    }

    if ([self.tableView respondsToSelector:@selector(setLayoutMargins:)]) {

    [self.tableView setLayoutMargins:UIEdgeInsetsZero];
    

    }

  1. 第二步

    - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
        if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
            [cell setSeparatorInset:UIEdgeInsetsZero];
        }
        if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
            [cell setLayoutMargins:UIEdgeInsetsZero];
        }
    }
    

持续更新中…