一.Swift中闭包的简单使用

 override func viewDidLoad() {
super.viewDidLoad() /**
闭包和OC中的Block非常相似
OC中的block类似于匿名函数
闭包是用来定义函数
作用:Block是用于保存一段点,在需要的时候执行
闭包也是用于保存一段点,在需要的时候执行做一个耗时操作
*/
/**
闭包的基本格式:
{
(形参列表)->()
in
需要执行的代码
}
*/
/**
* 闭包的几种格式:
1.将闭包通过实参传递给函数
2.如果闭包是函数的最后一个参数,那么闭包可以写在函数()的后面
3.如果函数只接收一个参数,并且这个参数是闭包,那么()可以省略
*/
loadData (, finished: {() -> () in
print("被回调了")
})
loadData (){ () -> () in
print("被回调了")
}
say { () -> () in
print("hello")
}
/**
闭包的简写:
如果闭包没有参数也没有返回值,那么,in之前的东西都可以删除,包括in
*/
loadData() {
print("hahfhahf ")
}
} func say(finish: ()->())
{ } func loadData(num: Int, finished: ()->())
{
print("执行耗时操作")
//回调通知调用者
finished()
} override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
//Swift中dispatch_async回调的是一个闭包
dispatch_async(dispatch_get_global_queue(, )) { () -> Void in
print(NSThread.currentThread())
print("执行耗时操作")
dispatch_async(dispatch_get_main_queue(), { () -> Void in
print(NSThread.currentThread())
print("回到主线程更新UI")
})
}
}

二.使用闭包 创建一个UIScrollView

 override func viewDidLoad() {
super.viewDidLoad()
let sc = createScrollView({ () -> Int in
return
}) { (index) -> UIView in
let width =
let btn = UIButton()
//3.设置按钮的属性
btn.backgroundColor = UIColor.greenColor()
btn.setTitle("标题\(index)", forState: UIControlState.Normal)
btn.frame = CGRect(x: index * width, y: , width: width, height: )
//4.返回建好的控件
return btn }
view.addSubview(sc)
}
//定义一个方法来创建UIScrollview,
//1.并且UIScrollview上有多少个按钮必须通过闭包告诉该方法
//2.按钮也通过闭包来创建
func createScrollView(btnCount: ()-> Int, btnWithIndex: (index:Int) ->UIView) -> UIScrollView
{
// 1.创建UIScrollview
let sc = UIScrollView(frame: CGRect(x: , y: , width: , height: ))
sc.backgroundColor = UIColor.redColor() // let width = 80
let count = btnCount()
//添加多个按钮
for i in ..<count
{
// let btn = UIButton()
// //设置按钮的属性
// btn.backgroundColor = UIColor.greenColor()
// btn.setTitle("标题\(i)", forState: UIControlState.Normal)
// btn.frame = CGRect(x: i * width, y: 0, width: width, height: 44)
// //将按钮添加
// sc.addSubview(btn)
let subView = btnWithIndex(index: i)
sc.addSubview(subView)
sc.contentSize = CGSize(width: CGFloat(count) * subView.bounds.width, height: )
} return sc
}

Swift学习--闭包的简单使用(三)的更多相关文章

  1. Swift学习--闭包中的懒加载(四)

    class ViewController: UIViewController { //格式:定义变量时前使用lazy来修饰变量,后面通过等到赋值一个闭包 // 注意点:1.必须是用var 2.闭包后面 ...

  2. 入门VMware Workstation下的Debian学习之Vim简单使用(三)

    什么是Vim? Vim具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计. Vim是从vi发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广 ...

  3. Swift学习之函数和简单地控件的创建

     今天还是重复昨天做的事情--敲代码,但唯一的不同就是所学的知识不同了,我们又进一步往深得层次学习了,感觉越来越有意思了,虽然临近结束了看着大家积极性越来越低了,但是我知道我不能这样,我要比别人付出的 ...

  4. Swift 学习笔记 (闭包)

    闭包是可以在你的代码中被传递和饮用的功能性独立模块.Swift中的闭包和C以及Objective-C中的Block很像,和其他语言中的匿名函数也很像. 闭包能捕获和存储定义在其上下文中的任何常量和变量 ...

  5. swift学习笔记之-闭包

    //闭包 import UIKit /*闭包(Closures): 函数.闭包.类都是引用类型(引用类型的实例赋值给变量或常量时,得到的都是该实例的引用,而值类型的实例变量得到的是独立的值的拷贝) 1 ...

  6. Swift 学习- 08 -- 闭包

    // 闭包是自包含的函数代码块, 可以在代码中被传递和使用, swift 中的闭包 与 C语言 和 OC 中的代码块 (blocks) 以及其他一些编程语言中的匿名函数比较类似 // 闭包可以捕获和存 ...

  7. 【Swift学习】Swift编程之旅---闭包(十一)

    闭包是可以在代码中被传递和使用的自包含功能模块,它很像c和oc中的block,和.net中的lambdasbas表达式. 闭包可以捕获和存储其所在上下文中任意常量和变量的引用. 包裹着这些常量和变量的 ...

  8. Swift学习:闭包(Closures)

    /* 闭包(Closures)* 闭包是自包含的功能代码块,可以在代码中使用或者用来作为参数传值.* 在Swift中的闭包与C.OC中的blocks和其它编程语言(如Python)中的lambdas类 ...

  9. Swift学习之十四:闭包(Closures)

    * 闭包(Closures) * 闭包是自包含的功能代码块,可以在代码中使用或者用来作为参数传值. * 在Swift中的闭包与C.OC中的blocks和其它编程语言(如Python)中的lambdas ...

随机推荐

  1. Nodejs建站笔记-注册登录流程的简单实现

    1. 使用Backbone实现前端hash路由 登录注册页面如下: 初步设想将注册和登录作为两个不同的url实现,但登录和注册功能的差距只有form表单部分,用两个url实现显然开销过大,所以最终方案 ...

  2. UWP开发入门(十六)——常见的内存泄漏的原因

    本篇借鉴了同事翔哥的劳动成果,在巨人的肩膀上把稿子又念了一遍. 内存泄漏的概念我这里就不说了,之前<UWP开发入门(十三)——用Diagnostic Tool检查内存泄漏>中提到过,即使有 ...

  3. SQL语句技巧之去除重复行

    去除表中重复行数据,可能大家立马就想到的是用DISINTCT关键字,但DISINTCT只能是去除表中所有列都相同的行,若碰到需要去除表中多个字段重复的行(即:部份相同,部份不相同),那么该如何做呢?我 ...

  4. 通过刷bios的方式在win8.1平板上启动windows phone模拟器

    最近买了个Windows8.1平板电脑,不是Surface Pro,太贵,而是国产的乐凡F2(64G.4G内存),CPU是赛扬U1037.最开始安装Visual Studio2013以及其他开发工具都 ...

  5. Event事件跨浏览器封装

    var Event = { //注册事件 addEvent: function(element,type,handler){ if(element.addEventListener){ //DOM2级 ...

  6. Winform开发框架之字典管理模块的更新,附上最新2013年全国最新县及县以上行政区划代码sql脚本

    在很多项目里面,字典管理是必备的项目模块,而这个又是比较通用的功能,因此可以单独做成一个通用字典管理,例如这个模块,可以通过集成的方式,使用在我的<Winform开发框架>.<WCF ...

  7. Winform开发框架之通用高级查询模块

    最近一直忙于公司的事情,虽然一直在做一些相关的技术研究,但是很久没能静下心来好好写写博客文章了,想想也有半个月之多了,这半个月来,也一直致力于改善我的WInform开发框架,使得自己及客户使用起来更加 ...

  8. C#简单文件下载-3行代码

    使用WebClient string url = "http://www.mozilla.org/images/feature-back-cnet.png"; WebClient ...

  9. Java概述之从源码到运行

    Java体系结构包括以下四个部分: 1. Java语言 2. Java class文件格式(被编译后的java类文件格式) 3. Java API 4. Java虚拟机JVM 它们之间的关系,总结一句 ...

  10. 【C#】1.2 控制台应用程序学习要点

    分类:C#.VS2015 创建日期:2016-06-14 教材:十二五国家级规划教材<C#程序设计及应用教程>(第3版) 一.要点概述 <C#程序设计及应用教程>(第3版)的第 ...