Closed errnull closed 3 years ago
if ([SVGAVideoEntity isMP3Data:protoImages[key]]) { // mp3 [audiosData setObject:protoImages[key] forKey:key]; } else { UIImage *image = [[UIImage alloc] initWithData:protoImages[key] scale:2.0]; if (image != nil) { image = [image imageByResizeToSize:image.size]; [images setObject:image forKey:key]; } }
(UIImage )imageByResizeToSize:(CGSize)size { if (size.width <= 0 || size.height <= 0) return nil; UIGraphicsBeginImageContextWithOptions(size, NO, self.scale); [self drawInRect:CGRectMake(0, 0, size.width, size.height)]; UIImage image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image; } 调用这个imageByResizeToSize方法就能解决这个内存暴涨的问题。知道原因的话可以交流。
@errnull 因为,模版layer会形成单独一层独立绘制,相当于以前绘制一帧的时间,现在必须进行2帧的绘制,时间是两倍的关系
@gdhGaoFei 这个方法效果很明显,但不太明白原理
memory_clippath.svga.zip
这个动效主要是矢量蒙版效果,使用 iPhone6 iOS 10.3 测试, 播放的过程中发现 GPU 有 70% - 80% 的开销(有时会更高),
而 CPU 的开销非常低,只有 5% - 8%。 在工作分摊上不是很均匀。