分类:

目录(?)[+]

Swift项目引入第三方库的方法

转自

http://blog.shiqichan.com/How-To-Import-3rd-Lib-Into-Swift-Project/

以下,将创建一个Swift项目,然后引入3个库:

  • Snappy 简化autolayout代码的库
  • Alamofire HTTP网络库,AFNetworking作者写的
  • SDWebImage 图片加载,objc项目,通过头文件bridge方式供swift使用

其中,前两个是Swift的库,SDWebImage是Objc的库。

源代码见:https://github.com/MarshalW/SwiftWith3rdLibDemo

项目跑起来是这个样子:

做下面步骤之前,需要让自己的项目是git项目。

使用Snappy库

Snappy库,用于简化AutoLayout布局的代码。

和Objc项目不同,Swift项目没有类似CocoaPods的库依赖工具,而是使用git的submodule引入库。目前来看更方便使用。

1. 创建submodule

在当前项目的目录下执行:


1

git submodule add https://github.com/Masonry/Snappy.git

执行完会看到多了个Snappy目录。

这样的项目,如果git共享给其他人,他们除了clone项目以外,还需要:


1

git submodule update --init --recursive

2. 将Snappy.xcodeproj加入到Xcode项目中

如下图所示,直接将文件拖拽过去即可:

3. 将Snappy.framework设置到项目中

Xcode打开项目的General,点击+

然后,选择Snappy.framework,加上它。

4. 编写代码测试

如果能正常import,Xcode不报错,就应该没有问题了:


1

import Snappy

写了个简单的代码运行也没有问题:


1
2
3
4
5
6
7
8
9
10

override func viewDidAppear(animated: Bool) {
println("super view: \(imageView.superview)")
let padding = UIEdgeInsetsMake(100, 100, 0, 0)
imageView.snp_makeConstraints { make in //autolayout
make.edges.equalTo(self.imageView.superview!).with.insets(padding)
return
}
}

使用SDWebImage库

SDWebImage库是Objc编写的。引入的方式和Swift有所不同(从第3步开始)。

1. 创建submodule

这一步还是省不了的:


1

git submodule add https://github.com/rs/SDWebImage.git

2. 将SDWebImage.xcodeproj加入到Xcode项目中

3. 设置Target Dependencies

在这里:

加入:

看起来是这样:

找到这里:

加入ImageIO.framework(iOS自带的),以及libSDWebImage.a

5. 设置Other Linker Flags

在这里设置-ObjC

设置完了的样子:

6. 创建Bridge头文件

就是创建一个普通的头文件,一般命名为项目名-Bridge-Header.h

7. 设置Bridge头文件

找到这里:

双击箭头标示的地方,会弹出文本框,将头文件加进去即可。

我开始的时候是参照stackoverflow的回答,将头文件直接拖拽进去,发现用的是绝对路径。可以在拖拽后修改一下:

引入第三方库的常见问题

目前主要碰到的问题是各个Swift第三方库Deployment Target版本不一致。比如Alamofire是8.0,而Snappy是7.0,需要让它们的版本是一致的。

会有类似这样的报错:


1

ld: embedded dylibs/frameworks are only supported on iOS 8.0 and later ...

Swift项目引入第三方库的方法相关推荐

  1. 微信小游戏---引入第三方库的方法

    引言 微信小游戏的开发中,群里面经常有一些同行问如何引入第三方库? 其实引入第三方库很简单.第三方库一般来说是JS文件,不管我们使用的是Laya引擎,还是白鹭引擎,还是cocos引擎,最后发布编译之后 ...

  2. 第32月第8天 打包 Framework 时使用 CocoaPods 引入第三方库的方法

    1. 但是可以发现打包完后的 .framework 包里面是没有 CocoaPods 集成的第三方库的,所以在使用 .framework 包时,工程中必须也要集成 .framework 包中用到的第三 ...

  3. swift导入oc第三方库

    swift导入oc第三方库 前言 对于ios开发而言,目前很多第三方库或者demo还是以oc为主,swift相关的资料很少,这篇文章就结合博主的开发实例对在swift工程中导入并使用oc版本的第三方库 ...

  4. uni-app 项目引入第三方js插件,单个js文件引入成功,调用该插件方法

    通过"vue项目引入第三方js插件,单个js文件引入成功,使用该插件方法时报错(问题已解决)"成功移到UNI-APP上 方法一: 引用网址:https://www.cnblogs. ...

  5. vue项目js文件引入第三方库组件

    vue项目js文件引入第三方库组件 //首先按需引入 第三方库 import { MessageBox } from 'element-ui' 使用: MessageBox.alert(`<di ...

  6. TP3.2的删除缓存与引入第三方库的问题(二)

    基本每天都会遇到新的问题,不记录下来是在是有点亏.以下内容也是在做项目的时候碰到,然后百度搜索答案,记到记事本上的,在此分享给大家. 一.关于删除TP框架的缓存问题 TP的缓存不仅仅局限于runtim ...

  7. swift项目调用OC库 和OC项目 在swift文件里面全局调用OC库

    最近比较清闲,就把以前学习的过程记录下吧,多少年后如果能在互联网上找到自己的痕迹,想想还是一件蛮值得高兴的事情. 正好这两天加了一个swift学习群想继续学习swift,发现好多swift初学者,在混 ...

  8. iOS学习资源汇总(开源项目、第三方库、技术博客等等)

    iOS学习资源汇总(开源项目.第三方库.技术博客等等) 字数3919 阅读10309 评论29 喜欢297 前言 Github众所周知,全球最大的同性社区交友网站,在这里你可以获取任何你想要的,只要你 ...

  9. Android Studio项目引入外部库注意事项(PullToRefresh)

    Android Studio开发App项目时引入第三方库是个比较麻烦的事情.之前导入Volley就折腾了好久,导入下拉刷新控件PullToRefresh时又碰到了各种问题.在此记录一下,以便查阅. 一 ...

最新文章

  1. html调试模式查看data数据库,接口调试:在线sql语句查看与性能优化
  2. GNN笔记:图信号处理(Graph Signal Processing)
  3. PostgreSQL GIN multi-key search 优化
  4. 华硕vm510l拆电池图解_图解说设备:凯斯CX80C你会买吗?
  5. 原始人java生存游戏_原始人人生模拟器
  6. [Android学习笔记]使用ListView
  7. vep文件如何转换mp4_如何将DVD的vob视频格式转换成mp4格式
  8. python中什么叫类、什么叫对象_python中的类面向对象的基本概念!
  9. linux怎么返回上级目录啊,用cd/命令却这样:bash:cd/:没有那个文件或目录
  10. 阿里架构师:​程序员必须掌握的几项核心能力
  11. 将计算机桌面分,win7电脑屏幕一分为4怎么设置_win7电脑屏幕分成四个区域操作方法...
  12. 类似818tu.co微信小说分销系统设计之多公众号网页授权自动登录源码
  13. unity + leapMotion 手势识别入门教程
  14. 亚马逊云科技帮助德比软件轻松应对爆发的增长
  15. Iperf测试WIFI
  16. 人工智能学习笔记:基本遗传算法及其改进算法
  17. 福昕阅读器自定义快捷键
  18. Linux服务--DHCP中继
  19. matlab 离群值去除方法,数据清洗中异常值(离群值)的判别和处理方法
  20. 有听力测试题的英语听力软件,英语听力软件哪个好?这几款最靠谱!

热门文章

  1. Spring源码分析【0】-框架的基础:继承和接口调用链
  2. 结构体的两种声明方式:堆上和栈上以及在双链表的应用
  3. C++11中std::forward_list单向链表的使用
  4. Ubuntu下,Java中利用JNI调用codeblocks c++生成的动态库的使用步骤
  5. 【FFmpeg】ffmpeg命令详解(二)
  6. Ruby之Enumerator类
  7. 进程 线程 协程_进程,线程,协程那些事
  8. Java项目:家居购物商城系统(java+html+jdbc+mysql)
  9. php复选框关联数据库字段,通过php将复选框中的多个值插入数据库
  10. 【js】内置对象String的常用方法