Swift桥接

在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.建立桥接文件

  1. 右键项目 -> New File,或者使用按快捷键command+N, 选择Header File

    Swift桥接_第1张图片

  2. 桥接文件命名格式为Test-Compatibility-Brigding-Header.h,就是工程名+-Brigding-Header.h

    Swift桥接_第2张图片

  3. 配置桥接文件
    点击target -> Builde Setting,在搜索框中输入bri,在结果列表中找到Object Bridging Header,在后面添加Test-Compatibility/Test-Compatibility-Brigding-Header.h,也就是工程名+/桥接文件名

    Swift桥接_第3张图片

  4. 编译看是否有错

3. 集成SVProgressHUD框架

  1. GitHub下载SVProgressHUD框架,并集成到项目中

  2. 在桥接文件中导入头文件

    Swift桥接_第4张图片

  3. 添加使用SVProgressHUD的相关代码

func btnClick() {
    print("btn click")

    SVProgressHUD.showInfoWithStatus("HUD")
    SVProgressHUD.setDefaultMaskType(SVProgressHUDMaskType.Black)
}
  1. 运行项目


    Swift桥接_第5张图片
  2. 点击按钮,查看效果


    Swift桥接_第6张图片

此时,swift桥接成功。

你可能感兴趣的:(Swift桥接)