实现卡片样式的 table cell 设置 shadow 时候显示异常
写了个 Demo ,放在 https://github.com/neil-wu/TestCardShadow
问题:初始化显示后, shadow 的位置并不正确,如下图,需要再次 reload 一下就正常了。
有遇到过类似问题的朋友,求指导。
大家都是怎么实现类似的阴影效果呢?
这个 Demo 没有出现的另外一个问题是:滑动 table 后, cell 重新出现时它的阴影看不到了。
设置 shadow 的代码如下:
let shadowLayer = self.cardBgView.layer
shadowLayer.shadowOffset = CGSizeMake(1, 1)
shadowLayer.shadowRadius = 3.0
shadowLayer.shadowColor = UIColor.grayColor().CGColor
shadowLayer.shadowOpacity = 0.5
let shadowSize = self.cardBgView.bounds.size
shadowLayer.shadowPath = UIBezierPath(rect: CGRectMake(2, 2, shadowSize.width, shadowSize.height)).CGPath
1
zsk425 2016-01-07 23:41:39 +08:00 1
问题出在你使用 shadowPath 时获取到的的 bounds.size 都是不正确的。
如果仅仅是偏移,使用 shadowOffset 就可以了,这里没有必要用 shadowPath |
2
butterflydog OP @zsk425 多谢,我试了下,这样设置可以, table 的滑动稍微有点卡顿,不过可以接受。
但还是会出现 cell 滑出显示区域,重新滑回来时,阴影被裁切的现象,可能是我的 auto layout 约束设置不正确吧,也不好调试。。。。 |
3
zsk425 2016-01-08 10:07:42 +08:00
@butterflydog 你可以更新一下你的示例代码,我帮你看看
|
4
butterflydog OP @zsk425 修改后发现,这个 Demo 一直都不会出现阴影下边被裁切的情况(看下图),我在项目里再测试一下吧,谢谢了
https://github.com/neil-wu/TestCardShadow/blob/master/Screenshot/shadow_clip.png |
5
xi_lin 2016-01-08 13:26:23 +08:00 1
@butterflydog 重写一下 cell 的 prepareForReuse 方法,在里面清空阴影设置
|
6
butterflydog OP @xi_lin 好嘞,我试试,谢啦
|