UITableView上的圆角

Scr*_*lie 33 iphone uitableview

如Stocks和Spotlight中所见,在整个UITableView上获得圆角的最佳方法是什么?分组的样式不能解决问题,因为圆角会随着单元格滚动.我正在尝试剪切视图,因此无论滚动位置如何,角落总是圆的.

我看到另一个讨论关于这样做的UIImage建议用另一个图像掩盖它.我不确定这是否有效,因为我需要点击才能传递到桌面.这对我来说并不理想,因为我希望通过角落显示背景图案.

Han*_*ers 65

这是一个老问题,但也许你仍然想知道如何做到这一点.

我在Stocks/Spotlight中复制了一个tableView.诀窍是

view.layer.cornerRadius = 10; 
Run Code Online (Sandbox Code Playgroud)

为此,您需要将QuartzCore包含在您调用该属性的类中:

#import <QuartzCore/QuartzCore.h>
Run Code Online (Sandbox Code Playgroud)

我听说这只适用于OS 3.0.但是由于我的应用程序使用的是核心数据,因此它已经适用于OS 3.0和Hight.

我使用带有cornerRadius 10的子视图创建了一个自定义UIView

view.backgroundColor = [UIColor clearColor];
Run Code Online (Sandbox Code Playgroud)

然后,您必须在该子视图中放置UITableView分组样式.您需要将backgroundColor设置为clearColor,将separatorColor设置为clearColor.然后,您必须将tableview放置在圆角视图内,这可以通过设置框架大小和原点来完成.我的自定义UIView的loadView类看起来像这样:

self.view = [[UIView alloc] init];
self.view.backgroundColor = [UIColor clearColor];

CustomUIViewClass *scherm = [[CustomUIViewClass alloc] init];

CGRect frame;
frame.origin.x = 10;
frame.origin.y = 50;
frame.size.width = 300;
frame.size.height = 380;

scherm.frame = frame;
scherm.clipsToBounds = YES;
scherm.layer.cornerRadius = 10;

[self.view addSubview:scherm];

CustomUITableViewClass *table = [[CustomUITableViewClass alloc] initWithStyle:UITableViewStyleGrouped];

frame.origin.y = -10;
frame.origin.x = -10;
frame.size.width = 320;
frame.size.height = 400;

table.tableView.frame = frame;
[scherm addSubview:table.tableView];
Run Code Online (Sandbox Code Playgroud)

我希望你能理解我的英语,也许我会用一个示例项目写一篇关于这个技术的简短博文,当我准备好时,会在这里发布链接.


raj*_*ato 56

更简单的方法是将QuartzCore框架简单地导入到项目中.#import <QuartzCore/QuartzCore.h>到你的tableViewController,只是设置

myTableView.layer.cornerRadius=5;
Run Code Online (Sandbox Code Playgroud)

这将为您提供圆角,而无需将您的tableview添加到superView或剪切它.

  • 太棒了!简单明了!谢谢 (3认同)

noo*_*lar 13

而不是破解代码,这里很容易模仿分组的样式.如果你想要的只是一个部分,这是有效的.

在Interface Builder中:

  • 将UITableView样式设置为Plain并使框架在左侧和右侧有一些填充,可能是x = 10和width = 300.

然后自己设置角半径和颜色:

 #import <QuartzCore/QuartzCore.h>

 self.tableView.layer.borderColor = [UIColor colorWithWhite:0.6 alpha:1].CGColor;   
 self.tableView.layer.borderWidth = 1;
 self.tableView.layer.cornerRadius = 4;
Run Code Online (Sandbox Code Playgroud)


Dan*_*ser 2

您尝试过“分组”表格视图样式吗?

self.tableView.style = UITableViewStyleGrouped;
Run Code Online (Sandbox Code Playgroud)

如需进一步参考,请参阅表视图编程指南。“关于表视图”一章有一些很好的屏幕截图,描述了不同的样式。