改变iOS6中分组的uitableview的角半径

时间:2013-08-07 05:20:00

标签: ios objective-c

我尝试过使用以下代码,但没有运气。有谁知道在iOS 6中如何做到这一点?我想要创建一个自定义单元格。

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

修改

看来实际发生的是这段代码为整个视图创建了一个角半径,而不是每个单独的UITableViewSection。这有意义吗?

我也试过[cell.layer setCornerRadius:3.0];但也没有运气。我的UITableView的角落仍然完全相同。

enter image description here

10 个答案:

答案 0 :(得分:19)

您可以更改TableViewCell的de backgroundView,创建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;

结果:

enter image description here

您可以修改所需的角落或创建另一条路径。

我希望它有所帮助。

答案 1 :(得分:4)

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

编写此代码,您将设置setCornerRadius也可以在分组tableView中使用。

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

enter image description here

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

答案 2 :(得分:3)

将此添加到您的.h文件

#import <QuartzCore/QuartzCore.h>

在下面的代码中使用

tblView.layer.cornerRadius=5.0f;

答案 3 :(得分:3)

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

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

在初始化单元格时输入上面的代码。

答案 4 :(得分:2)

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

import QuartzCore/QuartzCore.h to your .h file

self.tableView.layer.cornerRadius = 5.0f;

答案 5 :(得分:2)

我认为你错过了这行代码:

[self.tableView.layer setMasksToBounds:YES];

答案 6 :(得分:2)

首先你需要使用QuartzCode框架导入框架和声明.h文件你想要设置图层效果的类。

添加该方法

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

如果你想将角落radious设置为cell也试过这段代码

UITableViewCell.layer是一种类CALayer,CALayer类有一个名为cornerRadius的属性。所以你将细胞的角半径设置为休闲:

[cell.layer setCornerRadius:3.0];

试试这段代码。

答案 7 :(得分: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;

答案 8 :(得分:2)

我认为PrettyKit正是您所寻找的。完全可定制和快速。 https://github.com/vicpenap/PrettyKit试一试。应该正常工作。

答案 9 :(得分:1)

试试这个: -

tableView.layer.cornerRadius=5.0f;