圆角的tableView

---恢复内容开始---

效果:

实现原理,先画一个矩形,把这个矩形当作tableView的mask;代码:

//画一个圆角的矩形
- (void)drawRect:(CGRect)rect {
    //获取当前上下文
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGFloat cornerRadius = 10.0;
    CGFloat minx = CGRectGetMinX(rect);
    CGFloat midx = CGRectGetMidX(rect);
    CGFloat maxx = CGRectGetMaxX(rect);
    CGFloat miny = CGRectGetMinY(rect);
    CGFloat midy = CGRectGetMidY(rect);
    CGFloat maxy = CGRectGetMaxY(rect);

    CGContextMoveToPoint(context, minx, midy);
    CGContextAddArcToPoint(context, minx, miny, midx, miny, cornerRadius);
    CGContextAddArcToPoint(context, maxx, miny, maxx, midy, cornerRadius);
    CGContextAddArcToPoint(context, maxx, maxy, midx, maxy, cornerRadius);
    CGContextAddArcToPoint(context, minx, maxy, minx, midy, cornerRadius);

    CGContextClosePath(context);
    CGContextFillPath(context);
}
- (void)setupView {
    mask = [[ConnerView alloc]initWithFrame:CGRectZero];
    self.layer.mask = mask.layer;
    self.layer.cornerRadius = 10.0;
    self.showsVerticalScrollIndicator = NO;
    self.showsHorizontalScrollIndicator = NO;
}

- (id)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        [self setupView];
    }
    return self;
}

- (id)initWithCoder:(NSCoder *)aDecoder {
    if (self = [super initWithCoder:aDecoder]) {
        [self setupView];
    }
    return self;
}

- (void)adjustMask {
    CGRect frame = mask.frame;
    if (self.contentSize.height > self.frame.size.height) {
        frame.size = self.contentSize;
    }else {
        frame.size = self.frame.size;
    }
    mask.frame = frame;
    [mask setNeedsLayout];
    [self setNeedsLayout];
}

- (void)reloadData {
    [super reloadData];
    [self adjustMask];
}
#pragma mark delegata
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    if (cell.accessoryType == UITableViewCellAccessoryNone) {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    }else {
        cell.accessoryType = UITableViewCellAccessoryNone;
    }
}
时间: 2024-10-01 02:48:46

圆角的tableView的相关文章

iOS中如何优雅的添加圆角和边框?

因为项目需要,整理了下圆角和边框辅助类.想起前几天标哥还在微博里问圆角在tableView里卡顿的问题,想着去炫耀下.去到标哥的博客,发现已经有一定程度解决,给出开源库并且在推广,迭代了好几个版本了.. 圆角这东西被无数性能追求者津津乐道,无数小白们高山仰止. 至于圆角的几种实现方案,设置cornerRadius.加maskLayer.直接加镂空图.内存异步裁剪等等,网络上一搜一大把,这里就不再重复了.这里有两点要提醒下,纹理裁剪才是off-screen rendering的原因,而不是设置圆角

医生加号页改版,就一个Bug, 看医生工作台一期需求

8/8日报 分级埋点: [MobClick event:UmengPagePlusDoctor attributes:@{@"page":@"plusPage"}]; 弹层适配小屏幕, 标题比较长,太靠近左右两边了 使用中文标点符号 学习关于保险,超过50岁,重疾险就不好买了,这个"不好买”有两层意思,第一层,有的保险直接不卖给50岁以上的人,第二层,50岁以上的人重疾险非常昂贵,而且赔付的钱最多十万. 保险应该趁年轻买 看知乎,李元霸推荐的两款重疾险,父

tableView 获取网络图片,并且设置为圆角(优化,fps)

代码地址如下:<br>http://www.demodashi.com/demo/11088.html 一.准备工作 例子比较精简,没有什么特殊要求,具备Xocde8.0左右版本的就好 二.程序实现 1.相关代码截图 代码里除了三方库 SDWebImage Kingfisher,一共分别有两个 category 和 extension OC代码截图 Swift代码截图 ####2.具体实现下面我们来介绍下 OC的代码 实现逻辑首先我们利用SDWebImage 最近版本添加的成功回调的方法 [s

给头像设置圆角的卡顿解决

加入在tableView的每个cell里都有一个圆角头像,因为在layer.corner...开销过大,所以会造成卡顿,可以通过贝塞尔曲线进行绘制. // 如下所示 // Get your image somehow UIImage *image = [UIImage imageNamed:@"image.jpg"]; // Begin a new image that will be the new image with the rounded corners // (here wi

tableView优化性能

在iOS应用中,UITableView应该是使用率最高的视图之一了.iPod.时钟.日历.备忘录.Mail.天气.照片.电话.短信. Safari.App Store.iTunes.Game Center?几乎所有自带的应用中都能看到它的身影,可见它的重要性. 然而在使用第三方应用时,却经常遇到性能上的问题,普遍表现在滚动时比较卡,特别是table cell中包含图片的情况时. 实际上只要针对性地优化一下,这种问题就不会有了.有兴趣的可以看看 LazyTableImages这个官方的例子程序,虽

[转][荐]优化tableView性能—针对滑动时出现卡的现象

在iOS应用中,UITableView应该是使用率最高的视图之一了.iPod.时钟.日历.备忘录.Mail.天气.照片.电话.短信. Safari.App Store.iTunes.Game Center?几乎所有自带的应用中都能看到它的身影,可见它的重要性. 然而在使用第三方应用时,却经常遇到性能上的问题,普遍表现在滚动时比较卡,特别是table cell中包含图片的情况时. 实际上只要针对性地优化一下,这种问题就不会有了.有兴趣的可以看看 LazyTableImages这个官方的例子程序,虽

TableViewController 使用,TableView 一些常用的方法

#pragma mark - #pragma mark Table view data source //tableView 有多少个 section - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {     // Return the number of sections.     return [mutableArrayOrder count]; } //每个 section 有几行(几个元素) - (NS

优化TableView性能

优化tableView性能(针对滑动时出现卡的现象) (2013-08-02 11:18:15) 转载▼ ios tableview it 分类: 技术文档 在iOS应用中,UITableView应该是使用率最高的视图之一了.iPod.时钟.日历.备忘录.Mail.天气.照片.电话.短信. Safari.App Store.iTunes.Game Center?几乎所有自带的应用中都能看到它的身影,可见它的重要性. 然而在使用第三方应用时,却经常遇到性能上的问题,普遍表现在滚动时比较卡,特别是t

TableView滑动时候出现的卡顿现象

分析 UITableView是UIScrollView的子类,因此它可以自动响应滚动事件(一般为上下滚动). 它内部包含0到多个UITableViewCell对象,每个table cell展示各自的内容.当新cell需要被显示时,就会调用tableView:cellForRowAtIndexPath:方法来获取或创建一个cell:而不可视时,它又会被释放.由此可见,同一时间其实只需要存在一屏幕的cell对象即可,不需要为每一行创建一个cell. 此外,UITableView还可以分为多个sect