UITableView上的圆angular

在股票和聚光灯下看到的整个UITableView的圆angular最好的方法是什么? 分组的样式不能解决问题,因为圆angular会滚动单元格。 我试图剪辑视图,所以无论滚动位置,angular落都是圆的。

我看到另外一个关于如何对UIImage进行的讨论,build议用另一个图像来掩盖它。 我不知道这是否会工作,因为我需要点击通过到表。 这不是不适合我,因为我想要背景图案通过angular落展示。

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

我在股票/ Spotlight中复制了一个tableView。 诀窍是

view.layer.cornerRadius = 10; 

为了这个工作,你需要将QuartzCore包含到你调用该属性的类中:

 #import <QuartzCore/QuartzCore.h> 

我听说这只适用于OS 3.0。 但是由于我的应用程序正在使用核心数据,所以它不是问题,因为它已经是OS 3.0和Hight了。

我创build了一个自定义UIView与angularRadRadius 10和子视图

 view.backgroundColor = [UIColor clearColor]; 

然后你必须在该子视图中放置UITableView分组样式。 您需要将backgroundColor设置为clearColor,将separatorColor设置为clearColor。 然后,您必须将tableview放在圆angular视图中,这是通过设置框架大小和原点来完成的。 我的自定义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]; 

我希望你能理解我的英文,也许我会用一个样本项目写一篇关于这项技术的简短博客文章,当我准备好之后会在这里发布链接。

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

 myTableView.layer.cornerRadius=5; 

这会给你圆angular,而不必将你的tableview添加到超级视图或剪辑它。

通过代码黑客攻击,这里很容易模仿分组的风格。 如果你想要的只是一个部分,这是有效的。

在界面生成器中:

  • 将UITableView样式设置为Plain,并在左右两边填充一些边框,可能是x = 10和width = 300。

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

  #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; 

这是我提出的解决scheme。 它结合了图层蒙版和图层cornerRadius。 仅限iPhone OS 3.x。 我没有花费任何时间试图让滚动条工作,但我认为这不应该太困难。

http://github.com/beetlebugorg/RoundedUITableView

另一种方法是通过使用核心graphics掩盖UITableView。 掩盖UIView的一个例子可以在这里find: http : //iphonedevelopment.blogspot.com/2008/11/creating-transparent-uiviews-rounded.html

你有没有尝试过“分组”的表格风格?

 self.tableView.style = UITableViewStyleGrouped; 

有关进一步的参考,请参阅Table View Programming Guide 。 “关于表视图”一章有一些很好的截图描述不同的风格。

我最近遇到了这个问题,并以不同的方式解决了这个问题。 以为我会与大家分享结果。

我创build了一个具有清晰的圆angular内部的矩形UIView,然后将其放在UITableView的顶部。 你可以在我的编程博客上find完整的描述。

它的工作方式正是我想要的。 希望有所帮助。

那么,解决这个问题有很多方法。

但是,在我的情况下,所有不正确的工作。 我的桌子有时比桌子的尺寸小。

我会分享我的做法。 我相信比上面的一些选项更快捷。

使第一个和最后一个项目四舍五入。

  • 顶部(左|右)和底部(左|右)创buildCAShapeLayer

     shapeTop = [CAShapeLayer layer]; shapeTop.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake( 0.0f, 0.0f, 306.0f, 58.0f ) byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake( 6.0f, 6.0f )].CGPath; shapeBottom = [CAShapeLayer layer]; shapeBottom.path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake( 0.0f, 0.0f, 306.0f, 58.0f ) byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake( 6.0f, 6.0f )].CGPath; 
  • 该表需要背景clearColor;

  • 细胞必须是有色的背景;
  • 设置它的layer.mask

     UIView* backgroundView = [[UIView alloc] initWithFrame:CGRectZero]; backgroundView.backgroundColor = [UIColor whiteColor]; cell.backgroundView = backgroundView; 
  • 别忘了#import <QuartzCore/QuartzCore.h>

Swift版本的代码如下:

  let redColor = UIColor.redColor() self.tableView.layer.borderColor = redColor.colorWithAlphaComponent(0.9).CGColor self.tableView.layer.borderWidth = 1; self.tableView.layer.cornerRadius = 4; 

确保在导入部分中有import QuartzCore