文档章节

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

没有更多内容

加载失败,请刷新页面

加载更多

浅谈“李氏代换”——从纪念金庸和斯坦李说起

李氏代换(LSP)简介 李氏代换是软件设计的一个原则,又名依赖倒转原则或依赖倒置原则,其衍生原则有接口分离原则等。该原则由Barbara Liskov于1988年提出。 该原则指出,程序中高级别的元素...

SamYjy
10分钟前
5
0
JavaScript实现在线websocket WSS测试工具 -toolfk程序员工具网

本文要推荐的[ToolFk]是一款程序员经常使用的线上免费测试工具箱,ToolFk 特色是专注于程序员日常的开发工具,不用安装任何软件,只要把内容贴上按一个执行按钮,就能获取到想要的内容结果。T...

toolfk
28分钟前
0
0
linux-scp 远程拷贝报错原因

刚拿到一台重装后的服务器,远程ssh都正常,但是一scp拷贝东西就报错: 本地确定是有scp命令的,而且如果是本地没有scp不会报后面那句lost connection,因此就是远程没有scp这个命令。因此在...

linuxprobe16
41分钟前
1
0
OSChina 周六乱弹 —— 谁小时候没当过熊孩子呀

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《行尸走肉》- amazarashi 《行尸走肉》- amazarashi 手机党少年们想听歌,请使劲儿戳(这里) @神话 :周五了,周末干啥...

小小编辑
今天
78
2
docker部署springboot项目

安装docker 菜鸟教程 springboot项目 maven依赖 <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001......

yimingkeji
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部