用UIImage context
实现了。网上绝大部分也都是这个代码。 但是点进去api看了一下显示API_DEPRECATED
Before:
- (UIImage *)captureScreenForView:(UIView *)currentView {
// 开启一个绘图的上下文
UIGraphicsBeginImageContextWithOptions(CGSizeMake(currentView.size.width, currentView.size.height), NO, 0.0);
// 作用于CALayer层的方法。将view的layer渲染到当前的绘制的上下文中。
[currentView drawViewHierarchyInRect:CGRectMake(0, 0, currentView.frame.size.width, currentView.frame.size.height) afterScreenUpdates:YES];
// 获取图片
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
// 结束绘图上下文
UIGraphicsEndImageContext();
return viewImage;
}
After:
⚠️注意:API_AVAILABLE(ios(10.0)) ⚠️
- (UIImage *)captureScreenForView:(UIView *)currentView {
UIGraphicsImageRenderer *renderer = [[UIGraphicsImageRenderer alloc] initWithBounds:currentView.bounds];
UIImage *image = [renderer imageWithActions:^(UIGraphicsImageRendererContext * _Nonnull rendererContext) {
// 在这里绘制当前视图
[currentView.layer renderInContext:rendererContext.CGContext];
}];
return image;
}
Api用新不用旧。语言也一样 ,无奈工作中的项目都是OC,没有写Swift商业项目的机会,给OC项目混上Swift也行,但是包体积跟我说:这好吗?。
也还好上了Flutter的车,一晃写了3年Flutter。这又接手OC老项目了。
我想说:Flutter开发起来真的比原生语言爽多了!