使用Swift打包framework的步骤(图文)

我本文主要记录了使用Swift打包带界面的framework的步骤

需求: 打包一个framework供其他应用植入, 可以跳转(push或present)到framework的界面, 然后再把拿到的数据返回到主界

准备阶段:

1.使用Swift写好一个界面, 运行测试成功后, 留着备用(不建议使用xib, 建议使用纯代码搭建界面)--记得在需要外界引用的类用public修饰

2.如果涉及到图片, 先新建一个文件夹, 把界面需要到的所有图片放到里面, 然后修改文件夹后缀名加上".bundle"

3.将bundle包放入项目中, 加载图片时, 使用userBGView.image = UIImage.init(named:"img.bundle/input_bg") 这样的格式加载图片

开始打包framework:

1. 新建工程, 选择framework

2.把之前运行好的程序的文件和Bundle图片包, 直接拖拽到项目中

3.点击Target--Build Phase--Headers, 把所有需要引用的文件拖拽到public去, 如果没看到该文件, 可以点击+号选择(包括OC的.h文件)

4. 在xxxx(framewor项目名).h文件中, 导入OC的.h文件(如果不涉及OC文件, 这个步骤可以省略)

5.把之前写好的界面里面的所有图片加载方式加上"xxx(项目名称).framework"前缀(这一步很重要, 不然图片会加载失败)

之前是:userBGView.image=UIImage.init(named:"img.bundle/input_bg")的

修改后:userBGView.image=UIImage.init(named:"KyyLoginView.framework/img.bundle/input_bg")

6.选择Edit Scheme -- Run -- Build Configuration

根据需求编译所需的framework格式, 一般都是两种:  debug--模拟器  或者  release--真机

7.选择完毕后, command + B 编译, 然后会看到Products中的framework变成黑色了, 右键点击 show in finder, 可以直接拿到framework使用

到这里, 整个制作framework的过程就全部完成了

下面, 简单介绍一下使用

1.打开你需要导入framework的项目, 把之前制作好的framework复制到这个项目的文件中

2.在这个项目的Target中, 点击General--Embedded Binaries 点击 + 号, 然后点击 "Add Other...", 找到你刚才复制framework的目录, 选择framework

然后你会在Embedded Binaries 和 Linked Framework and Library 中看到这个framework

3.点击Target--Build Phases 中的 Copy Bundle Resource, 点击 + 号, 选择你的framework

ok, 到这里, 已经加载framework完成了, 编译试试

然后直接import引用framework, 之后就可以直接使用之前public出来的类了

我遇到的坑:

1. 使用xib, 怎么搞都不行. 解决办法: 放弃xib搭界面, 使用纯代码. 虽然花点时间, 但是起码不会有太多的坑

2. 加载framework时无法引用public的类. 解决办法: 在制作framework的时候, 记得"第3步"把需要引用的类拖拽到public中去

3. 图片加载不出来. 解决办法: 记得在加载图片时, 加上"xxx.framework/"的前缀

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,077评论 25 707
  • (原文:How to Create a Framework for iOS 作者:Sam Davies 译者:Mr...
    王宪岭阅读 4,890评论 2 23
  • 静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别...
    吃瓜群众呀阅读 11,931评论 3 42
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,652评论 18 139
  • 已经无法表达我对你的爱,每晚看你妳睡在我身旁,就偷亲几口,又像吃娃怪兽似的想把你吃进肚子里。却知那是不可能的。宝贝
    就想有个小号发泄一下阅读 140评论 0 1