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。 我没有花费任何时间试图让滚动条工作,但我认为这不应该太困难。
另一种方法是通过使用核心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完整的描述。
它的工作方式正是我想要的。 希望有所帮助。
那么,解决这个问题有很多方法。
但是,在我的情况下,所有不正确的工作。 我的桌子有时比桌子的尺寸小。
我会分享我的做法。 我相信比上面的一些选项更快捷。
使第一个和最后一个项目四舍五入。
-
顶部(左|右)和底部(左|右)创build
CAShapeLayer
。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
。