进入做地图闹钟app,图层关系是这样的: subwayView 上先绘制线路上各个元素:线条 ,站点名称-Label,站点位置(画圆圈表示)-View.shapeLayer UIBezierPath 方式绘制;subwaView add 在Scrollview 上,然后实现放大缩小操作,发现上下左右移动时候不是很流畅的感觉,分析应该是subwayView 的subView数量(200多个 )有影响。

想到的办法subwayView 绘制完所有的Subview后 ,将其转化为Image,然后移除所有的Subview,再将在 subwayView 上嵌套imageview ,之后缩放相当于缩放一个iamge。

经过测试果然流畅了。问题视乎解决了。但是发现label的文字确很模糊 ,特别是放大后,于是必须提高转化的图片的像素,使用如下方法:

- (UIImage *)convertViewToImage:(UIView*)v{
//设置高分辨率 防止文字模糊
UIGraphicsBeginImageContextWithOptions(v.bounds.size, false, [[UIScreen mainScreen] scale]*); [v.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage*image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image; }

UIScrollView 性能优化 - view转为Image-LMLPHP

04-28 14:52