我正在开发一个应用程序,我想创建类似于底部uitableviewcell下图所示的阴影效果。
我该怎么做?任何教程或示例代码?我查了http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html, http://www.touchthatfruit.com/?tag=uitableview 和其他一些。但他们在uitableview底部有相同高度的影子。如何 在包含日期(而不是整个tableview)的每个部分的边框边处添加阴影。我可以在底部创建下拉阴影。但是每个部分的最后一个uitableview单元格的边框怎么样。还有一种方法是创建图像并设置它作为tableviewcell的背景。但是如何调整图像的大小并且它看起来是否正确,因为每个部分都有动态的条目数。一个部分只有1个条目,其他部分可能包含15个或更多条目。(这里的图像是整个部分,包含日期).i可以只有每个部分的最后一个tableviewcell的单独图像。这是我知道的。但有没有更好的方法或以编程方式进行?
答案 0 :(得分:0)
您可以在uitableview中参考以下链接获取阴影效果,以帮助您
视图的一个基本部分是它的层是CALayer。您可以通过视图的图层属性访问它:
myView.layer
在文档中,CALayers有几个控制阴影的属性。您应该能够告诉导航栏的图层投射阴影。与您想要投射阴影的任何其他内容的图层一起。
myView.layer.shadowOffset
myView.layer.shadowRadius
您需要确保将QuartzCore框架添加到项目中以访问此属性
答案 1 :(得分:0)
每个部分的尺寸总是一样吗?如果是这样,你为什么不将UITableViewCell子类化为包含投影的笔记本项目?
您还可以在UITableView上添加透明的UIImageView以获得黑暗的角落。
编辑:
这种效果有点棘手,您将要了解如何使用UIBezierPaths(http://developer.apple.com/library/IOS/#documentation/UIKit/Reference/UIBezierPath_class/Reference/Reference html的)。
顶部可以是图像(环和标签效果)。然后,您可以在drawRect函数中绘制其余单元格。 (这比在UITableViewCell中使用层中的阴影属性更有效。)
您需要覆盖UITableViewCell类并实现自定义drawRect:function。
以下是一些可以帮助您入门的代码:
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
/* Draw top image here */
//now draw the background of the cell.
UIBezierPath *path1 = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, 320, 50)];
[[UIColor grayColor] set];
[path1 fill];
UIBezierPath *path2 = [UIBezierPath bezierPathWithRect:CGRectMake(0, 52, 320, 50)];
[[UIColor whiteColor] set];
[path2 fill];
UIBezierPath *path3 = [UIBezierPath bezierPathWithRect:CGRectMake(0, 104, 320, 50)];
[[UIColor grayColor] set];
[path3 fill];
UIBezierPath *path4 = [UIBezierPath bezierPathWithRect:CGRectMake(0, 156, 320, 50)];
[[UIColor whiteColor] set];
[path4 fill];
//and so on...
//Let's draw the shadow behind the last portion of the cell.
UIBezierPath *shadow = [UIBezierPath bezierPathWithRect:CGRectMake(0, 208, 320, 52)];
[[UIColor darkGrayColor] set];
[shadow fill];
//Finally, here's the last cell with a curved bottom
UIBezierPath *path5 = [UIBezierPath bezierPath];
[path5 moveToPoint:CGPointMake(0, 208)];
[path5 addLineToPoint:CGPointMake(320, 208)];
[path5 addLineToPoint:CGPointMake(320, 258)];
[path5 addCurveToPoint:CGPointMake(0, 258) controlPoint1:CGPointMake(160, 254) controlPoint2:CGPointMake(160, 254)];
[[UIColor grayColor] set];
[path5 fill];
}
代码不是很拖放,你仍然需要添加白线,修复一些尺寸,并调整最后一个单元格和阴影才恰到好处。但它应该足以让你开始。
干杯!
答案 2 :(得分:0)
看一下我的answer类似的问题,这可能是您问题的可能解决方案!通过改变阴影路径,您应该能够实现所需的阴影效果!
答案 3 :(得分:-1)
这可以使用bezierpath实现:检查URL以获取各种阴影效果:http://nachbaur.com/blog/fun-shadow-effects-using-custom-calayer-shadowpaths