Swift学习--闭包的简单使用(三)
一.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学习--闭包的简单使用(三)的更多相关文章
- Swift学习--闭包中的懒加载(四)
class ViewController: UIViewController { //格式:定义变量时前使用lazy来修饰变量,后面通过等到赋值一个闭包 // 注意点:1.必须是用var 2.闭包后面 ...
- 入门VMware Workstation下的Debian学习之Vim简单使用(三)
什么是Vim? Vim具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计. Vim是从vi发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广 ...
- Swift学习之函数和简单地控件的创建
今天还是重复昨天做的事情--敲代码,但唯一的不同就是所学的知识不同了,我们又进一步往深得层次学习了,感觉越来越有意思了,虽然临近结束了看着大家积极性越来越低了,但是我知道我不能这样,我要比别人付出的 ...
- Swift 学习笔记 (闭包)
闭包是可以在你的代码中被传递和饮用的功能性独立模块.Swift中的闭包和C以及Objective-C中的Block很像,和其他语言中的匿名函数也很像. 闭包能捕获和存储定义在其上下文中的任何常量和变量 ...
- swift学习笔记之-闭包
//闭包 import UIKit /*闭包(Closures): 函数.闭包.类都是引用类型(引用类型的实例赋值给变量或常量时,得到的都是该实例的引用,而值类型的实例变量得到的是独立的值的拷贝) 1 ...
- Swift 学习- 08 -- 闭包
// 闭包是自包含的函数代码块, 可以在代码中被传递和使用, swift 中的闭包 与 C语言 和 OC 中的代码块 (blocks) 以及其他一些编程语言中的匿名函数比较类似 // 闭包可以捕获和存 ...
- 【Swift学习】Swift编程之旅---闭包(十一)
闭包是可以在代码中被传递和使用的自包含功能模块,它很像c和oc中的block,和.net中的lambdasbas表达式. 闭包可以捕获和存储其所在上下文中任意常量和变量的引用. 包裹着这些常量和变量的 ...
- Swift学习:闭包(Closures)
/* 闭包(Closures)* 闭包是自包含的功能代码块,可以在代码中使用或者用来作为参数传值.* 在Swift中的闭包与C.OC中的blocks和其它编程语言(如Python)中的lambdas类 ...
- Swift学习之十四:闭包(Closures)
* 闭包(Closures) * 闭包是自包含的功能代码块,可以在代码中使用或者用来作为参数传值. * 在Swift中的闭包与C.OC中的blocks和其它编程语言(如Python)中的lambdas ...
随机推荐
- sass调试--页面看到sass文件而不是css文件问题
在浏览器页面有时看到sass文件而不是css文件问题,其主要由于sass开启了source-map(调试)功能,问题如下图: sass调试 sass调试需要开启编译时输出调试信息和浏览器调试功能,两者 ...
- Python单元测试框架之pytest---如何执行测试用例
介绍 pytest是一个成熟的全功能的Python测试工具,可以帮助你写出更好的程序. 适合从简单的单元到复杂的功能测试 l 模块化parametrizeable装置(在2.3,持续改进) l 参 ...
- Tiff – 值得你体验一下的可视化的字体对比工具
Tiff 是一款字体对比工具,可视化对比两种字体之间的差异.这是一个工具来帮助比较两种字体,同时学习排版.在这一点上,谷歌 Web 字体作为 Tiff 外部字体文件的唯一来源.由于应用程序使用的一些功 ...
- Python3.x中bytes类型和str类型深入分析
Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Python 3不会以任意隐式的方式混用str和b ...
- .NET框架面向对象分层的个人想理
简单.层次清晰不要过度优化,接口这玩意儿就是个双刃剑,玩好了解藕,玩不好自找麻烦,好的代码永远都是傻瓜都能看懂的. 总结成以下几条: 公用层 代码公用并且与第三方DLL和业务逻辑无关的 独立出来 逻辑 ...
- MagicalRecord,一个简化CoreData操作的工具库
简介 项目主页:https://github.com/magicalpanda/MagicalRecord 实例下载:https://github.com/ios122/MagicalRecord 在 ...
- 【第一课】神奇的Context
初学Android的困惑 初学Android跳转页面的时候,往往教程里是这么写的: Intent intent = new Intent(); //MyActivity就是当前的Activity,It ...
- Sprint回顾-0525
1.回顾组织 主题:“我们下次怎么样才能更加认真对待?” 时间:设定为1小时. 参与者:整个团队. 场所:宿舍走廊. 秘书:团队队长秘书,筹备.记录.整理. 2.回顾流程 Sprint总结: ...
- PHP的加密解密字符串函数
程序中经常使用的PHP加密解密字符串函数 代码如下: /********************************************************************* 函数 ...
- Redis 3.2.100 Windows 32位下载
因为公司的老服务器用的是Windows 2008 32位,不得不安装Redis32位.可在微软的Github上有64位的MSI安装包,前天开始在不同的群里寻找32位的安装包,一直没找到,索性自己下载源 ...