在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

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

  1. 第一章 熟悉Objective -C 编写高质量iOS与OS X代码的52 个有效方法

    第一章 熟悉Objective -C   编写高质量iOS与OS  X代码的52 个有效方法   第一条: 了解Objective-C 语言的起源 关键区别在于 :使用消息结构的语言,其运行时所应执行 ...

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

    上一章简约的介绍了CkEditor编辑器,可以编辑js逻辑代码,css,html,C#代码,这章我根据实际例子,讲解怎么编写C#代码和怎么调用它. 大家都还记得刚刚接触程序编时的hello Word吧 ...

  3. Jmeter自定义编写Java代码调用socket通信

    一.前言 最近需要测试一款手机游戏的性能,找不到啥录制脚本的工具,然后,另外想办法.性能测试实际上就是对服务器的承载能力的测试,和各种类型的手机客户端没有啥多大关系,手机再好,服务器负载不了,也不能够 ...

  4. Unity3D脚本调用Objective C代码实现游戏内购买

    0.开篇吐槽: 一年之内从WP转到iOS,又从iOS转到U3D,真心伤不起. 1.Unity3D脚本调用OC代码的原理: 其实也没啥神秘的,因为OC是和C互通的 ,C#又可以通过DllImport的形 ...

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

    AppleWatch开发教程之Watch应用对象新增内容介绍以及编写运行代码 添加Watch应用对象时新增内容介绍 Watch应用对象添加到创建的项目中后,会包含两个部分:Watch App 和 Wa ...

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

    原文地址 本文内容 ECMAScript 发生了什么变化? 新标准 版本号6 兑现承诺 迭代器和for-of循环 生成器 Generators 模板字符串 不定参数和默认参数 解构 Destructu ...

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

    1.Objective-C调用C++代码 后缀为m文件的是Objective-C的执行文件,而后缀为mm文件的是Objective-C++文件. 直接在Objective-C中是无法调用C++代码的, ...

  8. 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,我都说 ...

  9. 编写 Objective-C 代码

    如果您未曾开发过 iOS 或 Mac OS X 平台的程序,那就需要开始了解它们的首要程序设计语言 Objective-C.Objective-C 并不是一种很难的语言,如果能花一点时间学习,相信您会 ...

随机推荐

  1. arm:jlink调试和直接烧写运行的不同 [mdk s3c2440]

    1.对全局变量的初始化. 2.还没发现的事例. /*************************************************/ 先上连接文件sct LR_ROM1 0x3000 ...

  2. 知识点3-6:HTML辅助方法

    顾名思义,HTML辅助方法(HTML Helper)就是用来辅助产生HTML之用,在开发View的时候一定会面对许多HTML标签,处理这些HTML的工作非常繁琐,为了降低View的复杂度,可以使用HT ...

  3. java正则去掉小数点后多余0

    需求:已知字符串为一数字字符形式,多为float,double转换过来,将其后多余的0与.去掉. package test; /** * 去掉多余的.与0 * @author Hust * @Time ...

  4. 教你看懂C++类库函数定义之一---HRESULT 宏

    一切从一个C++ 类库头文件开始,现在在做一个C++的项目,期间用到一个开源的界面库DUILib(类似MFC),这个东西还不错能很容易的写出漂亮的界面,比如QQ的界面,可以去下载下来研究研究,地址:h ...

  5. C# - MemoryStream

    代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; ...

  6. WCF技术剖析之十四:泛型数据契约和集合数据契约(下篇)

    原文:WCF技术剖析之十四:泛型数据契约和集合数据契约(下篇) [爱心链接:拯救一个25岁身患急性白血病的女孩[内有苏州电视台经济频道<天天山海经>为此录制的节目视频(苏州话)]]在.NE ...

  7. perl json模块

    JSON - JSON (JavaScript Object Notation) encoder/decoder 简介: use JSON; # imports encode_json, decode ...

  8. HTML+CSS - 搜索 And 高级搜索

  9. QNX简介<转载>

     QNX QNX是由QNX软件系统有限公司开发的实时操作系统. http://blog.csdn.net/happyhell/article/details/7087199 基本特征 * QNX是一个 ...

  10. 重操JS旧业第八弹:面向对象与继承

    js里面没有语言语法层面的继承机制,但这并不意味着js就不能实现继承,利用js属性和方法动态性来模拟实现继承,通过总结大概有如下方法实现: 1 原型链继承 我们知道原型在对象中扮演着重要的角色,函数本 ...