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. 本文的重点在第三部分,是在开发中遇到的问题及解决的方法.第一,第二部 ...
随机推荐
- textarea 绕过jq验证的方法,提交空值
<textarea placeholder=" aria-required="true" aria-describedby="OtherNotes-err ...
- 字符串如何实现反转?python实现
今天和一个同事出去吃饭,突然话风转变,考了问我一个问题,他说哥,你知道字符串怎么反转吗? 我想了想,我擦,回家看我博客.作为一个资深开发,怎么可能被一个毛头小子问住了! 于是,我今天就稍微的整理了一下 ...
- 【CYH-02】NOIp考砸后虐题赛:数学:题解
赛后放上.
- 如何利用Azure Automation以及Tag自动开关VM
这是本博客第一篇技术相关的小贴士,在这里我不会详细介绍所涉及的技术组件的具体使用细节,因为我相信这些大家都可以通过官方文档了解到.如果你是一个看了官方文档依然一脸茫然的IT小白,个人建议是先从基础重新 ...
- bat命令闪退问题
今天执行一个bat命令,然而会出现问题:双击执行bat命令时,命令提示符界面会闪退. 然而该bat命令在他人电脑上可正常执行,而我会遇到这种问题. 以下是我尝试的方法: 首先尝试编辑bat命令,在ba ...
- 【Java中级】(三)IO
1. 流分为字节流和字符流 2. 字节流下面常用的又有数据流和对象流 3. 字符流下面常用的又有缓存流 文件对象 文件和文件夹都用File表示 //file path : 文件的绝对路径或相对路径Fi ...
- eclipse(javaee windows)
百度云:链接:http://pan.baidu.com/s/1eSoO4s6 密码:54am 官方下载网址:http://www.eclipse.org/downloads/eclipse-pac ...
- centOS7 安装mysql-5.7.20-1.el7.x86_64.rpm-bundle.tar
在虚拟机上安装mysql走了不少弯路,在此备份... 首先感谢下这几篇博客提供的帮助: https://www.cnblogs.com/pythonal/p/6141516.html http://b ...
- (原创)将Datatable数据按照Excel模板格式导出
最近遇到一个问题,就是导出数据的时候需要自定义的表头,如图 如果自己用代码写表头的话,可能会有点复杂,而且代码量很多,所以我就想了一个办法,直接在Excel里面把表头定义好,然后把数据写入Excel模 ...
- 0728 history
-- :: cd /etc/yum.repos.d/ -- :: wget http://download.virtualbox.org/virtualbox/rpm/rhel/virtualbox. ...