文档章节

SKTexure To UIImage,即 SpriteKit 截屏

陈圣晗
 陈圣晗
发布于 2015/06/18 17:04
字数 406
阅读 15
收藏 0

SKTexure To UIImage,即 SpriteKit 截屏

问题来源

我们使用 SpriteKit 做游戏的时候,至少有两种时候需要写程序截屏:

  1. 完成游戏关卡后,分享到社交网络
  2. 自制关卡编辑器,并需要批量生成在选关界面显示关卡预览图

这个时候我们的第一反应差不多会是

SKView *skView = self.view;
SKTexutre *tex = [skView textureFromNode:skView.scene];

然而你会发现在 iOS 9 和 OS X 10.11 到来之前,这个东西并没有什么卵用,因为你踏破铁鞋也找不到能把 SKTexture 转成 UIImage/NSImage/CGImage 的方法,即使你发现 XCode 6 Debug 的时候,设置断点可以预览 SKTexture。(这个时候确实挺想逆向一下看看 XCode 是怎么做到的,可惜不会。。。ORZ)

问题解决

目前亲测可用的唯一方法,还只能用在 iOS 上,如下:


- (UIImage*) imageWithView:(UIView *)view
{
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
    
    [view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES];
    
    UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    return img;
}

然后

UIImage *img = [self imageWithView:self.skView];

如果想在 OS X 上用这个方法,抱歉不行,因为 上述方法 drawViewHierarchyInRect 只在 UIIVew 中有效,NSView 没有这个方法。如果一定要在 OS X 上截图,可能需要考虑使用 OS X 截屏方面的 API 了。

好消息是,iOS 9 和 OS X 10.11 的 SDK 里面,SKTexture 已经自带一个 CGImage 属性,自制关卡编辑器需要在 OS X 上截图的同学,看来需要尽快升级到 OS X 10.11 了。至于 iOS,显然还是需要继续使用老办法一段时间,毕竟用户的系统版本不归我们管。

© 著作权归作者所有

共有 人打赏支持
陈圣晗
粉丝 5
博文 12
码字总数 7377
作品 2
闵行
iOS开发技巧(系列九:UIView截屏)

本博客翻译自苹果问答中心,原文链接在此。 问:在iOS7以及以后的版本中,我怎样对一个UIView对象或者其子类对象截屏,并将截取的内容以UIImage的形式存储? 答:自iOS7开始,UIView类提供了...

召唤攻城狮
2014/05/05
8.5K
2
UIImage 图片处理:截图,缩放,设定大小,存储

图片的处理大概就分 截图(capture), 缩放(scale),设定大小(resize), 存储(save) 这几样比较好处理, 另外还有滤镜,擦试等, 以后再说 在这个Demo code裡, 我写了几个方法 1.等比率缩放 - (UII...

王石头
2013/12/03
0
0
UIImage 图片处理:截图,缩放,设定大小,存储

图片的处理大概就分 截图(capture), 缩放(scale),设定大小(resize), 存储(save) 这几样比较好处理, 另外还有滤镜,擦试等, 以后再说 在这个Demo code裡, 我写了几个方法 1.等比率缩放 - (UII...

Liuxz-aaa
2011/06/21
0
0
iOS--OC--图片拉伸和尺寸变换,图片简单处理

图片拉伸和尺寸变换 图片拉伸 : - (UIImage )stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight; 一般 leftCapWidth = imageWidth .5f, top......

丶雨凡
2015/03/26
0
0
iOS屏幕截图

屏幕截图 1.将整个屏幕layer渲染到新的图片上下文上进行再加工 2.具体的代码的分析(步骤都写了,十分的简单) 3.源代码地址 github

AppleDream
2016/06/28
21
0

没有更多内容

加载失败,请刷新页面

加载更多

身处小公司,如何在2年内快速突破,拿到大厂offer?|掘金技术征文

本文是我一个朋友的经历,谨以此文告诉那些向往更好的未来发展而一直努力奋斗的朋友们。不管你现在身处什么小公司,都不要气馁,机会还是有的,只要你敢于拼搏奋斗,我相信你一定可以成功的。...

SuShine
25分钟前
1
0
web应用防火墙的作用

web应用防火墙也被称为网站应用级入侵防御系统,按照一些常规的定义,WAF是指通过一些列针对HTTP/HTTPS的安全策略专门为web应用提供保护的产品。它主要用于防御针对网络应用层的攻击,像SQL...

上树的熊
26分钟前
2
0
5分钟掌握var,let和const异同

转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 原文出处:https://dzone.com/articles/javascript-difference-between-var-let-and-const-...

葡萄城技术团队
29分钟前
4
0
gif工具ffmpeg 的安装

ffmpeg 是一个可以将视频生成gif 格式的图片的工具, 下面说说如何安装这个工具吧: 1、 2 3 4 5 配置环境变量:

wangyanbao
30分钟前
1
0
RocketMq在windows下安装

mqnamesrv.cmd -n localhost:9876#启动namesrvmqbroker.cmd #启动brokermqbroker.cmd -n localhost:9876 autoCreateTopicEnable=true//启动控制台java -jar rocketmq-console-ng......

王桥修道院副院长
30分钟前
1
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部