在应用程序开发的世界中,性能始终是一个问题。今天,我将向您展示如何轻松地为自定义绘图的应用程序添加性能。
如果您曾经使用过CoreGraphics API,那么您可能知道绘图工作主要是在CPU上完成的。因为,你的应用程序逻辑的其余部分也将依赖于CPU,你不希望你的UI代码被锁定。
在这三部分系列中,我将向您介绍设置此代码的代码。
第三部分: 把它们放在一起
第三部分: 把它们放在一起
好是这样,现在你可以渲染成一个图像,你知道如何创建异步代码。那么我们如何将两者结合在一起呢?
其实很简单。
我们将首先创建一个新的视图,但派生自UIImageView。
然后,我们要添加一个无效的方法与标志,说是否呈现异步。
基本上就是这样!
@ interface CustomView()
{
SingleDispatchQueue * _dispatcher;
}
@ end
@ implementation CustomView
-(void)invalidate 🙁 BOOL)async
{
CGSize size = self.bounds.size;
if(async)
{
if(_dispatcher = = nil)
_dispatcher = [[SingleDispatchQueue alloc]init];
__ 弱CustomView * weakSelf = self;
[_dispatcher addBlock:^()
{
UIImage * image = [weakSelf draw:size];
dispatch_sync(dispatch_get_main_queue(), ^()
{
weakSelf.image = image;
});
}];
}
else
{
self.image = [self draw:size];
}
}
-(UIImage *)draw 🙁 CGSize)size
{
CGFloat screenScale = [UIScreen mainScreen].scale;
UIGraphicsBeginImageContextWithOptions(size, NO, screenScale);
CGContextRef ctx = UIGraphicsGetCurrentContext();
// Todo-绘图代码在这里
UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
返回图像;
}
@ end
就是这样!
现在只需插入你的绘图代码,你就可以走了。
每当你调用无效,你可以画出你的观点。
享受!
史蒂芬·扎哈鲁克 (SteveZ)