UITableView 中的圆顶角

Posted

技术标签:

【中文标题】UITableView 中的圆顶角【英文标题】:Round top corners in UITableView 【发布时间】:2013-07-03 15:31:01 【问题描述】:

我确实在 UItableView 中添加了圆角,但只在顶角。 问题是当我在 UItableView 中使用掩码时,UItableView 只显示前 4 个单元格。

当我从掩码中注释代码时,tableview 工作正常..

这是我的代码:

UIBezierPath *maskPath;
maskPath = [UIBezierPath bezierPathWithRoundedRect:_tbFeeds.bounds byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight) cornerRadii:CGSizeMake(9.0, 9.0)];

CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = _tbFeeds.bounds;
maskLayer.path = maskPath.CGPath;
_tbFeeds.layer.mask = maskLayer; //tbfeeds is my tableview
[maskLayer release];

【问题讨论】:

看起来几乎与同一张海报中的this question 完全相同。 【参考方案1】:

一种方法是在表格视图中添加标题:

- (void)loadView 
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 10)]; // height of header (10)
    [headerView setBackgroundColor:[UIColor whiteColor]]; // color of header (white)

    UIBezierPath *maskPath;
    maskPath = [UIBezierPath bezierPathWithRoundedRect:headerView.bounds byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight) cornerRadii:CGSizeMake(5.0, 5.0)];

    CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
    maskLayer.frame = headerView.bounds;
    maskLayer.path = maskPath.CGPath;
    headerView.layer.mask = maskLayer;

    self.tableView.tableHeaderView = headerView;

【讨论】:

以上是关于UITableView 中的圆顶角的主要内容,如果未能解决你的问题,请参考以下文章

IOS / Objective-C:矩形的圆顶角不擦除边框

分组 UITableView 上的自定义背景图像

编辑时 UITableViewCell 的角半径被重置

如何使UITableview中的DPFBannerView不滚动

应用程序退出 *** -[UITableView _configureCellForDisplay:forIndexPath:] 中的断言失败

从 UItableview 删除一行时崩溃