在swift项目中,有时候会使用一些使用OC语言的第三方库,那这时候怎么办呢?其实Swift和OC是可以混编的,使用swift的桥接功能就可以轻松实现,在swift中调用OC中的方法。
首先,新建一个测试工程,在这个项目中有一个按钮,点击按钮会弹出一个HUD,这个HUD使用的是OC语言写的第三方库SVProgressHUD,可在Github上下载该第三方库。
废话不多说,进入正题。
1. 新建项目
工程名字为Test-Compatibility,在view中添加一个按钮。
let btn: UIButton = UIButton()
btn.frame = CGRect(x: 80, y: 100, width: 100, height: 30)
btn.setTitle("click", forState: UIControlState.Normal)
btn.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
btn.backgroundColor = UIColor.grayColor()
btn.addTarget(self, action: "btnClick", forControlEvents: UIControlEvents.TouchUpInside)
view.addSubview(btn)
2.建立桥接文件
-
右键项目 -> New File,或者使用按快捷键command+N, 选择Header File。
-
桥接文件命名格式为Test-Compatibility-Brigding-Header.h,就是工程名+-Brigding-Header.h。
-
配置桥接文件
点击target -> Builde Setting,在搜索框中输入bri,在结果列表中找到Object Bridging Header,在后面添加Test-Compatibility/Test-Compatibility-Brigding-Header.h,也就是工程名+/桥接文件名
编译看是否有错
3. 集成SVProgressHUD框架
在GitHub下载SVProgressHUD框架,并集成到项目中
-
在桥接文件中导入头文件
添加使用SVProgressHUD的相关代码
func btnClick() {
print("btn click")
SVProgressHUD.showInfoWithStatus("HUD")
SVProgressHUD.setDefaultMaskType(SVProgressHUDMaskType.Black)
}
-
运行项目
-
点击按钮,查看效果
此时,swift桥接成功。