文档章节

SKTexure To UIImage,即 SpriteKit 截屏

陈圣晗
 陈圣晗
发布于 2015/06/18 17:04
字数 406
阅读 14
收藏 0
点赞 0
评论 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 ⋅ 2

UIImage 图片处理:截图,缩放,设定大小,存储

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

王石头 ⋅ 2013/12/03 ⋅ 0

UIImage 图片处理:截图,缩放,设定大小,存储

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

Liuxz-aaa ⋅ 2011/06/21 ⋅ 0

iOS--OC--图片拉伸和尺寸变换,图片简单处理

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

丶雨凡 ⋅ 2015/03/26 ⋅ 0

iOS屏幕截图

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

AppleDream ⋅ 2016/06/28 ⋅ 0

IOS开发之—程序截图

-(void)fullScreenshots{ UIWindow *screenWindow = [[UIApplication sharedApplication] keyWindow]; UIGraphicsBeginImageContext(screenWindow.frame.size);//全屏截图,包括window [scr......

于赟 ⋅ 2012/11/01 ⋅ 0

iOS 截屏功能代码

(UIImage *)screenshot:(UIDeviceOrientation)orientation isOpaque:(BOOL)isOpaque usePresentationLayer:(BOOL)usePresentationLayer { CGSize size; if (orientation == UIDeviceOrientat......

AK_47 ⋅ 2014/07/09 ⋅ 0

iPhone开发中怎么实现截屏

(UIImage *)capture { UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0.0); [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIIma......

andyhe91 ⋅ 2013/05/10 ⋅ 0

iOS app开发中常用技巧

1.退出App 必要时,我们还需要设置Plist属性 2.直接回到主界面 当然,你也可以使用 [UIApplication shareApplication].keyWindow.rootViewController.viewControllers进行遍历回退 3.禁止UIS...

IamOkay ⋅ 2016/05/21 ⋅ 0

iOS 截屏并保存在本地

点击截取图片按钮触发下面的代码: UIGraphicsBeginImageContext(self.view.bounds.size); [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *image=UIGraphicsGe......

精神贵族养成中 ⋅ 2016/04/01 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Day 17 vim简介与一般模式介绍

vim简介 vi和Vim的最大区别就是编辑一个文件时vi不会显示颜色,而Vim会显示颜色。显示颜色更便于用户编辑,凄然功能没有太大的区别 使用 yum install -y vim-enhanced 安装 vim的三种常用模式...

杉下 ⋅ 30分钟前 ⋅ 0

【每天一个JQuery特效】根据可见状态确定是否显示或隐藏元素(3)

效果图示: 主要代码: <!DOCTYPE html><html><head><meta charset="UTF-8"><title>根据可见状态确定 是否显示或隐藏元素</title><script src="js/jquery-3.3.1.min.js" ty......

Rhymo-Wu ⋅ 39分钟前 ⋅ 0

OSChina 周四乱弹 —— 初中我身体就已经垮了,不知道为什么

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @加油东溪少年 :下完这场雨 后弦 《下完这场雨》- 后弦 手机党少年们想听歌,请使劲儿戳(这里) @马丁的代码 :买了日本 日本果然赢了 翻了...

小小编辑 ⋅ 58分钟前 ⋅ 8

浅谈springboot Web模式下的线程安全问题

我们在@RestController下,一般都是@AutoWired一些Service,由于这些Service都是单例,所以并不存在线程安全问题。 由于Controller本身是单例模式 (非线程安全的), 这意味着每个request过来,...

算法之名 ⋅ 今天 ⋅ 0

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部