前提
前一段时间在开发的过程中,遇到了一个坑,当我给某个View添加阴影效果的时候,因为这个View的Size是动态的,然后动态改变View的size的时候,阴影没有随着改变,用了半天才把这个问题解决,最后总结的时候觉得是自己对阴影效果理解不透彻,所以在此记录一下,以便加深印象,下面附上代码分析:
代码分析
1 | // shadowColor阴影颜色 |
注意
shadowPath可以提前告诉 CoreAnimation 你要渲染的view的形状的Shape,可以减少离屏渲染的计算时间,大大的提高性能,防止低性能设备的卡顿出现
然而!!!但是!!!意外发生了。。。
因为设置了shadowPath,当因为屏幕的不一样,autolayout会改变view的size,或者某些的操作改变了view的size,shadowPath没有随着改变,导致阴影的位置对不上,一开始没有往这方面想,以为是分辨率不一样要不同的处理,弄了半天。。。
最后发现解决问题的方向搞错了,网上终于找了真正的原因,下面是个人觉得比较好的解决方式,上代码!
1 | - (void)layoutSubviews { |
新建一个UIView的子类,重写layoutSubviews方法,当view改变大小会调用此方法,然后相应的改变shadowPath,完美解决!!!
end