Swift项目引入第三方库的方法
以下,将创建一个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
写了个简单的代码运行也没有问题:
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
在这里:

加入:

看起来是这样:

4. Link Binaray With Libraries
找到这里:

加入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项目引入第三方库的方法的更多相关文章
- android项目引入第三方库工程出现的问题及解决方案
一.导入libar库工程 1.使用第三方库工程libary,基本上都是从github上下载,解压后里面有个libary文件夹 2.将libary导入到eclipse中,步骤如下 1)在eclipse包 ...
- Laravel引入第三方库的方法
https://blog.csdn.net/will5451/article/details/52472695 1.首先在app目录下创建一个新的文件夹,命名libs(可自定义) 2.(可选)考虑到后 ...
- laravel加入验证码类几种方法 && Laravel引入第三方库的方法
1,使用require , inlcude 的方法将验证码类文件包含进来,再进行new 2,将验证码类文件放于Http目录下面,也就是和控制器controller放在一个目录下面,在验证码类文件中加上 ...
- vue-cli创建的项目中引入第三方库报错 'caller', 'calle', and 'arguments' properties may not be...
http://blog.csdn.net/sophie_u/article/details/76223978 以在vue中引入mui第三方库为例: 虽然针对vue,有单独的vue-mui库可以使用,但 ...
- vue-cli创建的项目中引入第三方库报错'caller', 'calle', and 'arguments' properties may not be...
本文链接:https://blog.csdn.net/Sophie_U/article/details/76223978 问题: 在vue的main.js中引入mui.min.js时,报错. 如上,单 ...
- iOS-启动项目(二)引入第三方库
摘要 项目中很大几率会用到第三方库,通过 Pod 方式引入第三方库是效率很高的方式,这里介绍一个新的项目搭建 Pod 方式的环境,方便项目中引入第三方库文件. 刚创建的项目中如果需要用到第三方库,常用 ...
- Android Studio项目引入外部库注意事项(PullToRefresh)
Android Studio开发App项目时引入第三方库是个比较麻烦的事情.之前导入Volley就折腾了好久,导入下拉刷新控件PullToRefresh时又碰到了各种问题.在此记录一下,以便查阅. 一 ...
- 详细地jsoncpp编译方法 和 vs2010中导入第三方库的方法
详细地jsoncpp编译方法 和 vs2010中导入第三方库的方法 一 编译链接 1 在相应官网下载jsoncpp 2 解压得到jsoncpp-src-0.5.0文件 3 打开jsoncpp-src- ...
- Android中集成第三方库的方法和问题
Android中集成第三方库的方法和问题 声明: 1. 本文參考了网上同学们的现有成果,在此表示感谢,參考资料在文后有链接. 2. 本文的重点在第三部分,是在开发中遇到的问题及解决的方法.第一,第二部 ...
随机推荐
- NOIP 2017 惊魂记
考完了NOIP三周后才开始补……然后又补了一周…… DAY -1: 晚上吃了一顿送行宴散伙饭,然后默默地看了一遍之前所有考试后写的题解,再读了几遍板子,然后和QTY一起和达哥又一次在外面谈了一个小时, ...
- 微信小程序开发--数据绑定
一.单项数据绑定 <!-- index.wxml --> <view class="container"> <form> <input v ...
- 【DFS练习】-翻棋子-C++
Description 有一个4*4的棋盘,放有16枚棋子. 每个棋子都是一面黑一面白,一开始有的黑面朝上,有的白面朝上. 下面是一个例子,这个例子用文字描述为: bwbw wwww bbwb bww ...
- ASP.NET Core MVC 之模型(Model)
1.模型绑定 ASP.NET Core MVC 中的模型绑定将数据从HTTP请求映射到操作方法参数.参数既可以是简单类型,也可以是复杂类型.MVC 通过抽象绑定解决了这个问题. 2.使用模型绑定 当 ...
- list模板题
题面: 设计一个int类型的动态链表L,L中有一个代表当前位置的光标,支持下列操作: insert(x): 在光标前面插入元素x,插入后光标指向新插入的元素x move(d): 如果d为正数,则光标向 ...
- 简单题[期望DP]
也许更好的阅读体验 \(\mathcal{Description}\) 桌面上有R张红牌和B张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付出1美元.可以随时停止翻牌 ...
- apache CXF Service 简单使用
cxf介绍 框架官网:cxf.apache.org 支持多种协议: SOAP1.1,1.2 XML/HTTP CORBA(Common Object Request Broker Architectu ...
- vijos p1217 乒乓球
注意数组越界.#include<iostream> #include<cmath> using namespace std; char letter[10001]; void ...
- Ubuntu通过修改配置文件进行网络配置
Ubuntu系统进行网络配置有的时候用图形界面不起作用,这种情况下可以直接修改某些启动脚本或配置文件 Ubuntu系统进行网络配置涉及到几个配置文件1./etc/network/interfaces ...
- Cobbler-自动化部署神器
Cobbler-自动化部署神器 前言: 网络安装服务器套件 Cobbler(补鞋匠)从前,我们一直在做装机民工这份很有前途的职业.自打若干年前 Red Hat 推出了 Kickstart,此后我们顿觉 ...