Swift调用Objective-C编写的代码(颜色选择器KKColorListPicker调用)

在Swift项目中,我们可以导入任意用Objective-C写的框架,代码库等。下面以Swift调用Objective-C编写的颜色选择器KKColorListPicker为例。

效果图如下:

    

实现步骤:

1,首先在项目里导入KKColorListPicker的源码(整个文件夹,在项目上有键“Add Files To XXX”).

2,手工创建桥接头文件bridge.h来包含需要引用的Objective-C头文件,内容如下:


1

2

3

//KKColorsSchemeType.h已经包含在KKColorListViewController.h

#import "KKColorListViewController.h"

#import "KKColor.h"

3,选择项目,在Build Setting -> Swift Compiler-Code generation -> Objective-C Bridging Header设置里添加bridge.h,如下图所示:

4,页面使用 ViewController.swift


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

import UIKit

class ViewController: UIViewController, KKColorListViewControllerDelegate {

    

    //Object-C编写的颜色选择器视图

    var viewColor:KKColorListViewController!

    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.

        

        //初始化颜色选择面板

        //这个颜色选择面板是用OC开发,我们导入头文件后就能在Swift里调用了

        viewColor = KKColorListViewController(schemeType:KKColorsSchemeType.Crayola)

        //此类实现了颜色选择面板的代理协议,并重载了选择颜色和关闭2个回调函数

        viewColor.delegate = self

        

        //创建一个按钮

        var button:UIButton = UIButton.buttonWithType(UIButtonType.System) as! UIButton;

        //设置按钮位置和大小

        button.frame=CGRectMake(10, 50, 100, 30);

        //设置按钮文字

        button.setTitle("选择背景色", forState:UIControlState.Normal)

        button.addTarget(self,action:Selector("selColor:"),forControlEvents:UIControlEvents.TouchUpInside)

        self.view.addSubview(button);

    }

    

    //点击选择背景色的事件操作

    func selColor(sender: AnyObject) {

        //显示颜色选择面板

        self.presentViewController(viewColor, animated: true, completion:nil)

    }

    

    //选择颜色后回调

    func colorListController(controller:KKColorListViewController,  didSelectColor color:KKColor)

    {

        //关闭颜色选择器视图

        viewColor.dismissViewControllerAnimated(true, completion:nil)

        //设置当前视图的背景颜色为用户选择的颜色

        self.view.backgroundColor = color.uiColor()

    }

    //用户在颜色选择器视图里点击了关闭

    func colorListPickerDidComplete(controller:KKColorListViewController)

    {

        //只需要关闭颜色选择器视图

        viewColor.dismissViewControllerAnimated(true, completion:nil)

    }

    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }

}

源码下载:Test6.zip

时间: 2024-10-15 21:27:31

Swift调用Objective-C编写的代码(颜色选择器KKColorListPicker调用)的相关文章

基于CkEditor实现.net在线开发之路(2)编写C#代码,怎么调用它。

上一章简约的介绍了CkEditor编辑器,可以编辑js逻辑代码,css,html,C#代码,这章我根据实际例子,讲解怎么编写C#代码和怎么调用它. 大家都还记得刚刚接触程序编时的hello Word吧,首先我来介绍在编辑器上写了返回“hello Word”的C#方法,让后怎么去调用返回对应hello Wrod方法,具体代码如下: 运行预览效果如下图 页面加载之后就弹出了hello world对话框.证明获取到了我们写返回字符串. 注意编辑C#代码 并可以用ajax调用,C#代码方法必须要有一定的

AppleWatch开发教程之Watch应用对象新增内容介绍以及编写运行代码

AppleWatch开发教程之Watch应用对象新增内容介绍以及编写运行代码 添加Watch应用对象时新增内容介绍 Watch应用对象添加到创建的项目中后,会包含两个部分:Watch App 和 WatchKit Extension,如图2.18所示.其中,Watch App部分位于用户的iWatch上,它目前为止只允许包含Storyboard文件和Resources文件.在我们的项目里,这一部分不包括任何代码.WatchKit Extension部分位于用户的iPhone安装的对应App上,这

Zend Studio 12.0.2正式版发布和破解方法,zend studio 12.0.1汉化,相式设置为Dreamweaver,空格缩进为4个, 代码默认不折叠的设置,Outline中使用的图形标志,代码颜色之eot设置。

背景:zend studio 12.0.2 修复了一个12.0.1的:  Fixed problem with referenced variables marked as undefined,我都说好像有问题,刚开始还以为是破解得有问题呢. AddTime:2015-4-5zend studio 12.0.2 破解&keygen:http://download.csdn.net/detail/wfstock/8418635 破解ZendStudio 10.1:刚才装了个ZendStudio 1

IOS-Swift、Objective-C、C++混合编程

1.Objective-C调用C++代码 后缀为m文件的是Objective-C的执行文件,而后缀为mm文件的是Objective-C++文件. 直接在Objective-C中是无法调用C++代码的,所以如果需要在Objective-C调用C++语言就需要直接将后缀m文件改为mm,然后就可以调用C++代码了. Objective-C兼容C,Objective-C++兼容C.C++. 接下来是在OC工程中创建C++文件,并调用C++的代码: 然后在OC文件中直接用C++的语法调用C++,所以前提是

编写可读性代码的艺术

在做IT的公司里,尤其是软件开发部门,一般不会要求工程师衣着正式.在我工作过的一些环境相对宽松的公司里,很多程序员的衣着连得体都算不上(搞笑的T恤.短裤.拖鞋或者干脆不穿鞋).我想,我本人也在这个行列里面.虽然我现在改行做软件开发方面的咨询工作,但还是改不了这副德性.衣着体面的其中一个积极方面是它体现了对周围人的尊重,以及对所从事工作的尊重.比如,那些研究市场的人要表现出对客户的尊重.而大多数程序员基本上每天主要的工作就是和其他程序员打交道.那么这说明程序员之间就不用互相尊重吗?而且也不用尊重自

最新的JavaScript核心语言标准——ES6,彻底改变你编写JS代码的方式!【转载+整理】

原文地址 本文内容 ECMAScript 发生了什么变化? 新标准 版本号6 兑现承诺 迭代器和for-of循环 生成器 Generators 模板字符串 不定参数和默认参数 解构 Destructuring 箭头函数 Arrow Functions Symbols 集合 学习Babel和Broccoli,马上就用ES6 代理 Proxies ES6 说自己的宗旨是"凡是新加入的特性,势必已在其它语言中得到强有力的实用性证明."--TRUE!如果你大概浏览下 ES6 的新特性,事实上它

react-native-pg-style使用方法(以最简单的方式编写样式代码)

react-native-pg-style 以最简单的方式编写样式代码,抛弃react-native标准的样式创建方式. 看大家写的源码中都是按照react-native标准的样式创建方式来写样式代码的,样式代码就占了大概四分之一,甚至三分之一的代码,然而我却喜欢把样式写在一行当中.而不用const styles=StyleSheet.create({样式属性...})来写,我觉得这样在改动样式时便不用在跑到StyleSheet.create中修改,而且代码量会少很多,于是就有了这个插件. 下面

第1课第4.4节_Android硬件访问服务编写HAL代码

4 编写HAL代码 源码下载方法 第一次: git clone https://github.com/weidongshan/SYS_0001_LEDDemo.git 更新: git pull origin 取出指定版本: git checkout v1 // 有JNI没有HAL git checkout v2 // 有JNI,HAL git checkout v3 // add MODULE TAG, DEVICE TAG JNI 向上提供本地函数, 向下加载HAL文件并调用HAL的函数HAL

JNI技术基础(2)——从零开始编写JNI代码

书接上文: <JNI技术基础(1)——从零开始编写JNI代码> 2.编译源程序HelloWorld.java并生成HelloWorld.class 3.生成头文件HelloWorld.h 在Linux控制台输入命令:javah –jni HelloWorld 生成HelloWorld.h头文件 //HelloWorld.h /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header