7

I've tried using the following code but with no luck. Anybody know how to do this in iOS 6? I do not want to create a custom cell.

self.tableView.layer.cornerRadius = 5.0f;
    [self.tableView setClipsToBounds:YES];

Edit:

It appears that what's actually happening is that this code is creating a corner radius for the entire view, not each individual UITableViewSection. Does this make sense?

I have also tried [cell.layer setCornerRadius:3.0]; but also with no luck. The corners of my UITableView are still exactly the same.

enter image description here

4

10 回答 10

19

您可以更改 TableViewCell 的背景视图,创建 UIView 的子类并更改图层类:

@interface BackgroundView : UIView
@end

@implementation BackgroundView

+ (Class)layerClass
{
    return [CAShapeLayer class];
}
@end

稍后在 cellForRowAtIndexPath 你做这样的事情:

static NSString *CellIdentifier = @"CustomCell";
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

CGRect frame = cell.backgroundView.frame;
cell.backgroundView = [[BackgroundView alloc] initWithFrame:frame];

CGFloat corner = 20.0f;
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:cell.backgroundView.bounds byRoundingCorners:UIRectCornerAllCorners cornerRadii:CGSizeMake(corner, corner)];
CAShapeLayer  *shapeLayer = (CAShapeLayer *)cell.backgroundView.layer;
shapeLayer.path = path.CGPath;
shapeLayer.fillColor = cell.textLabel.backgroundColor.CGColor;
shapeLayer.strokeColor = [UIColor lightGrayColor].CGColor;
shapeLayer.lineWidth = 1.0f;

return cell;

结果如下:

在此处输入图像描述

您可以修改所需的角或创建其他路径。

我希望它有所帮助。

于 2013-08-14T19:20:16.363 回答
5

谁说[_tblView.layer setCornerRadius:10.0];不能在分组样式 tableView 中工作。

编写此代码,您将设置 setCornerRadius 也适用于分组 tableView。

[_tblView setBackgroundView:nil];
[_tblView setBackgroundColor:[UIColor greenColor]];
[_tblView.layer setCornerRadius:10.0];

在此处输入图像描述

[_tblView.layer setCornerRadius:10.0];不会为 tableView 的特定部分创建圆角半径,这是用于设置整个 tableView 的圆角半径。

于 2013-08-17T05:27:47.280 回答
3

而不是设置单元格的角半径,而是设置 cell.contentview 的半径,如下所示:

cell.contentView.layer.cornerRadius = 10.0f;
cell.contentView.layer.borderColor = [UIColor blackColor].CGColor;
cell.contentView.layer.borderWidth = 3.0f;

在初始化单元格时放置上面的代码。

于 2014-02-03T12:59:35.453 回答
3

将此添加到您的 .h 文件中

#import <QuartzCore/QuartzCore.h>

并在您的代码中使用以下内容,

tblView.layer.cornerRadius=5.0f;
于 2013-08-17T04:34:41.973 回答
2

我认为您缺少这行代码:

[self.tableView.layer setMasksToBounds:YES];
于 2013-08-07T05:38:52.677 回答
2

首先,您需要使用 QuartzCode 框架导入该框架并声明 .h 文件要设置图层效果的类。

并添加该方法

myTableView.layer.cornerRadius=5;
[myTableView setClipsToBounds:YES];

如果您想将角半径设置为单元格也尝试了此代码

UITableViewCell.layer 是一种 CALayer 类,CALayer 类有一个叫做cornerRadius 的属性。所以你将单元格的角半径设置为休闲:

[cell.layer setCornerRadius:3.0];

试试这个代码。

于 2013-08-07T05:41:31.653 回答
2

将quartzcore 框架添加到您的项目中

import QuartzCore/QuartzCore.h to your .h file

self.tableView.layer.cornerRadius = 5.0f;

于 2013-08-07T05:29:50.357 回答
2

你可以这样做。它为我工作

    UILabel *delLbl = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 300, 44)];
    delLbl.font = [UIFont fontWithName:@"Arial-BoldMT" size:18];
    delLbl.layer.cornerRadius = 10.0f;
    delLbl.layer.borderWidth = 1.0f;
    delLbl.layer.borderColor = [UIColor grayColor].CGColor;
    delLbl.text = @"Cell Text";
    delLbl.textAlignment = NSTextAlignmentCenter;
    [cell.contentView addSubview:delLbl];
    cell.backgroundView = [[UIView alloc] initWithFrame:CGRectZero];
    Return Cell;
于 2013-08-07T05:43:15.337 回答
2

我认为 PrettyKit 是您正在寻找的。完全可定制且快速。https://github.com/vicpenap/PrettyKit试一试。应该正确地完成工作。

于 2013-08-16T02:40:34.200 回答
1

尝试这个:-

tableView.layer.cornerRadius=5.0f;
于 2013-08-07T06:03:50.477 回答