ios 分享纯图片素材-iOS shareExtension总结
iOS中怎么样在Xcode中复制图片素材

首先得理解一个概念。
在xcode中看到得文件夹(group)是逻辑上的,而非物理上的。
所以建议,在project下手动创建一个文件夹,再手动拖到相应工程目录下。
切记不要在project中右键创建文件夹,否则所有文件都在工程目录下的。
如何提取iOS App素材

如果开发者要开发应用,游戏,但自己并不擅长美工,那么只能去网上到处找素材,但网上的免费素材并不多,免费素材很少能满足开发者的需求。不过还有一个办法,我们可以从其他应用中提取素材,这些素材的质量还是比较高的。
我们就拿微信的打飞机为例,首先把微信的安装包下下来,apk文件,或者ipa文件,把后缀名改成rar,然后用winrar解压出来。
ipa解压后素材很好找,资源都放在一个目录下,直接用缩略图来找就能找到需要的图片素材,有些是单独一个对象的图片,可以拿来直接用,有些是多个对象的图片合成一张大图,这就需要对应的打包配置文件才能读取各区域的小图片,如果配置文件加密了,那么这个大图基本上没办法用。
apk解压出来素材都放在assets和res目录下,不过由于微信打飞机是做成一个jar集成在微信里面的,所以我们在assets/preload目录下可以看到一个名字带有“shoot”的jar文件,把这个jar解压出来,在res目录下可以找到一些图片素材,另外在shoot目录下可以找到打包过的图片素材:
这些打包的图片也有对应的打包配置文件,记录了各个小图的裁剪区域,也需要用配置文件来读取图片信息。好在apk版本的配置文件并没有加密,用文本模式打开我们就可以看到配置信息,包括各个小图片的区域和名称,稍作调整支持我们常用的开发引擎,就可以拿来用了。
但并不是所有的应用都可以提取其素材,有些会把图片信息加密处理了,在加载的时候再解密出来使用,这样我们就没法盗用它的素材了。另外,如果明显盗用其他应用的素材,就会涉及到侵权了,所以开发者提取应用的素材最好以自己开发练习来用,不要光明正大的把应用发布到市场上去。
最后还是要说,成功的应用离不开优秀的美工,美工转独立开发者成功的案例很多,但程序员要自己做美工还是很有难度的,实在需要美工的话可以考虑招人或者外包出去。
iOS shareExtension总结

下面主要说一下再整个过程中个人觉得比较重要的几个地方
这些属性根据自己的需求设置好数量就行。说一下可能遇到的问题
1.1、
NSExtensionActivationSupportsText,主要用于备忘录之类文本分享,网上资料有的说设置bool类型,有的说设置string类型,值为YES,我这边都不好使,最后设置为值为1的number类型可以了。如果跟我遇到同样问题的可以试下
1.2、
在App Store分享APP时,有两个NSExtensionItem,UTI分别为和,loadItemForTypeIdentifier获取item类型为NSURL和UIImage,截图分享的item类型也为UIImage
在自定义VC的viewDidLoad异步获取分享数据,获取完毕刷新UI
这块是这个功能踩坑最多的地方,因为在widget中内存限制为120M,图片、视频、文件,随随便便都超了,这里说一下几个需要注意的地方
这里主要是多图时可能会出现内存过大的情况,我这边的处理是直接把图片copy到共享目录,然后跳转主App里发送原图。也可以直接将图片压缩后转成base64str数组然后写入共享目录,不过压缩比例不好控制,压缩后的总大小,小图不能压缩等都要考虑进去,下面把几个用到的方法和处理时机贴一下
3.1.1、
图片压缩方法
3.1.2、
图片base64str互转
3.1.3
、获取主要信息loadItemForTypeIdentifier方法里保存图片地址,用于UI展示及后续写入共享目录
3.1.4、
确认分享时把图片批量copy到共享目录,也可以选择压缩后转base64str数组写入文件
3.1.5、
呼起主APP后先从获取图片地址数组,在通过图片地址取分享数据
一方面是UI展示所需要的内容,如视频封面图、时长、大小,文件的大小、类型
这里说一下取文件大小时不能取NSData得length方式,大文件会导致内存溢出,应该使用NSFileManager获取,这里要注意下通过loadItemForTypeIdentifier取得的路径要先stringByRemovingPercentEncoding解码再截取/var之后的路径,比如你取得文件路径为file%3A%2F%2F%2Fprivate%2Fvar%2Fmobile%2FLibrary%2FMobile%20Documents%2Fcom%7Eapple%7ECloudDocs%2F%E6%9C%AA%E5%91%BD%E5%90%8D%E6%96%87%E4%BB%B6%E5%A4%B9%
那你要用/var/mobile/Library/Mobile Documents/com~apple~CloudDocs/未命名文件夹/去取文件大小,下面把主要用的方法贴一下
3.2.1、
文件大小以及格式化
3.2.2、
获取视频时长(这里要用全路径)
3.2.3、
获取视频封面图(这里也要用全路径)
3.2.4、
获取文件类型对应切图,把图片素材替换为你们UI给的切图
因为需要把分享的文件存储到group共享目录里去,当文件超过120M的时候,就不能使用writeToURL了,要不会内存溢出,这里使用NSFileManager的copyItemAtPath,在使用这个函数的时候两个路径都要使用解码后再截取/var之后的路径
目前能想到的就这么多啦,如果有什么疑问或者发现什么不足,欢迎评论指正。
-
果盘绘画图片大全简单创作方法快速制作技巧2024-01-02 16:57:54
-
小年插画图片创作方法快速制作技巧2024-01-02 16:57:20
-
小年绘画作品制作技巧2024-01-02 16:55:45
-
小年插画图片创作方法快速制作技巧2024-01-02 16:55:02
-
立春插画图片如何制作2024-01-02 16:54:19
-
立春插画图片创作方法快速制作技巧2024-01-02 16:53:32






扫描二维码添加客服微信
扫描二维码关注