在应用程序开发的世界中,性能始终是一个问题。今天,我将向您展示如何轻松地为自定义绘图的应用程序添加性能。
如果你曾经使用过coregaphics API,那么你可能知道绘图工作主要是在CPU上完成的。因为,你的应用程序逻辑的其余部分也将依赖于CPU,你不希望你的UI代码被锁定。
在这三部分系列中,我将向您介绍设置此代码的代码。
第1部分: 绘制成图像
第一部分: 绘制成图像
通常,当你去绘制一些自定义UI时,你可能会绘制到UIView的CGContext中。虽然这是一个合法的方式来做到这一点,你有更少的控制,当你可以画。
相反,通过绘制图像,您可以完全控制,甚至可以控制所绘制内容的分辨率。
那么,绘制图像的代码是什么样子的。以及它令人惊讶的非常简单:
-(UIImage *)draw 🙁 CGSize)size
{
CGFloat screenScale = [UIScreen mainScreen].scale;
UIGraphicsBeginImageContextWithOptions(size, NO, screenScale);
CGContextRef ctx = UIGraphicsGetCurrentContext();
// Todo-绘图代码在这里
UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
返回图像;
}
就是这样!很简单,对吧?
让我们通过代码片段,所以你知道发生了什么。
第一部分,抓住屏幕缩放,控制图像将被渲染的 “像素密度”。基本上,如果图像是视网膜或非视网膜。默认情况下,比例将为1,即非视网膜。所以,我们抓住设备的规模并使用它,这样无论我们使用什么设备,它看起来都很好。请注意,规模越高,性能应该越差。因此,如果您需要获得更好的性能,并且渲染质量不那么重要,您可以随时降低比例。
接下来的步骤,只是抓住我们要绘制的CGContext。
然后,您可以插入绘图代码。
最后,我们需要抓住我们想要创建的图像。
请继续关注本系列的第2部分,其中我将介绍异步代码。