iOS7中UITableView的圆角处理

31
在iOS7中,我如何在UITableView中绘制单元格的圆角?请参考以下示例:

enter image description here


1
很有可能这些单元格正在进行自定义绘制,或者它们正在使用图像。http://www.cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html - NathanAldenSr
4个回答

34

你的 UITableview 包含了 UIView,所以只需要使用以下代码来使它变成圆角。同时,在你的 tableview 方法中加入以下代码:

//如果 iOS 版本 < 10

对于 Objective-C:

TBD

cell.contentView.layer.cornerRadius = 5;
cell.contentView.layer.masksToBounds = YES;

对于Swift:

cell.contentView.layer.cornerRadius = 5
cell.contentView.layer.masksToBounds = true

//如果iOS版本 >= 10

对于Objective-C:

cell.layer.cornerRadius = 5;
cell.layer.masksToBounds = YES;

对于Swift:

cell.layer.cornerRadius = 5
cell.layer.masksToBounds = true

注意:无需显式导入QuartzCore框架


2
你是不是指的是cell.contentView而不是view? - Fahim Parkar
不知道一年前使用“YES”是否有效,但现在至少是“true”而不是“YES”,尽管如此,这对我来说完美地起作用了。 - TaylorAllred
1
也许是因为我在使用Swift,我不知道,但我知道在那里输入YES并没有起作用,不得不使用true。我从未听说过任何使用YES或NO来表示BOOL的代码,直到你发布了那个文档页面,所以无论如何。我想我只是错过了obj-c标签,即使当我在谷歌中输入Swift时找到了这个页面。 - TaylorAllred
ن½؟用YESè،¨ç¤؛Objective-C,ن½؟用trueè،¨ç¤؛Swiftم€‚ - KingPolygon
@AbhishekThapliyal 是对的,在iOS 10上不起作用,但这段代码可以工作。 cell.layer.cornerRadius = 50; cell.layer.masksToBounds = YES; - Tiago Mendes

13

我创建了UITableViewCell的子类,为了让它正常工作必须省略contentView。

cell.layer.cornerRadius = 10 cell.layer.maskToBounds = true


我不知道为什么,但同样的事情却奏效了。为什么 cell.contentivew.layer.cornerRadius = 5; 不起作用呢? - Abhishek Thapliyal
你有继承UITableViewCell吗?我不再开发iOS了,但我记得这是我最初需要这个解决方法的原因。 - hidden-username
@AbhishekThapliyal 如果单元格具有非透明的cell.backgroundColor或非透明的cell.backgroundView,那么cell.contentview.layer.cornerRadius将不足以实现效果。这就是为什么hidden-username解决方案可能比Hussain Shabbir或Fahim Parkar更好的原因。 - Cœur

3
请问需要翻译成哪种语言呢?
[cell.contentView.layer setCornerRadius:7.0f];
[cell.contentView.layer setMasksToBounds:YES];

3
尝试使用表格视图委托。
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    cell.layer.cornerRadius = 10;
    cell.layer.masksToBounds = YES;
}

注意/建议: 最好使用单元格 XIB/NIB 文件,在其中添加一个 UIView,通过约束保持 上、下、左、右 四个角的间距,将单元格背景设为透明并将 UIView 圆角化。我的解决方案可以解决这种情况。但是始终要遵循最佳实践。


1
你的解决方案甚至比所有之前的方案都要好! - Cœur
有史以来最好的解决方案! - Ing. Ron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接