开发记录

259 阅读2分钟

记性不好,记录下开发中遇到的问题和解决方案。

如果有更好的解决方式或者发现我的任何错误,希望能够指出来,互相学习,共同进步。先谢过了~

  1. 使用贝塞尔曲线绘图的时候,发现并没有按照设定的轨迹绘制图层,只出现了一个小圆点。
    分析: 当时放置绘制view的父视图使用的布局方式是autolayout,而贝塞尔曲线的数据计算方式使用了frame。由于在绘制曲线的时候,还不能获取到真正的frame,所以造成了这个问题。(再次因为混血使用跳坑。。。)
    解决: 在layoutSubviews中有布局后正确的frame,将贝塞尔曲线的绘制相关方法转到这个方法中实现即可。

  2. 在某列表中需要使用多个标签(UILabel),而且没个标签都有圆角,大量设置layer.masksToBounds = YES之后,页面会明显卡顿。
    分析: 在iOS9之前,这种切割圆角的方式会触发离屏渲染,iOS 9.0 之后UIButton设置圆角会触发离屏渲染,而UIImageView里png图片设置圆角不会触发离屏渲染了,如果设置其他阴影效果之类的还是会触发离屏渲染的。根据测试的效果来看,UILabel切割圆角应该也是触发了离屏渲染的。
    解决:

    • cornerRadius属性:它是影响layer显示的backgroundColor和border,对layer的contents不起作用。
    • 对于不需要设置label的backgroundColor,只设置borderWidth、borderColor,直接设置cornerRadius,不需要设置masksToBounds = YES,就可以实现圆角功能。
    • 对于需要同时设置label的backgroundColor时,直接设置cornerRadius是不能正常显示圆角的,原因是:UILabel设置backgroundColor的行为,不再是设定layer的背景色而是为contents设置背景色。所以解决方式是我们不去设置label的backgroundColor,而是直接设置label.layer.backgroundColor,这样就可以实现单独设置cornerRadius,显示圆角的效果。