swift基础语法--闭包
2016-05-17 22:59
363 查看
一、闭包的基本使用:
创建一个swift项目:
闭包类似于oc中block,可以通过下面的代码看出:
二、闭包的参数和返回值
实现一个UI界面。
uiscrollview上面添加了N个button,可以滚动uisrollview
要求:定义一个方法来创建UIScrollview
1、并且UIScrollview上有多少个按钮必须通过闭包的形式告诉该方法
2、并且如何创建按钮也需要通过闭包来创建
//
// ViewController.swift
// 闭包的返回值和参数
//
// Created by base on 16/09/19.
// Copyright © 2016年 base. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let sc = creatScrollView({ () -> Int in
return 5
}) { (index) -> UIView in
let width = 80
let btn = UIButton()
//3、设置UIButton的属性
btn.setTitle("标题\(index)", forState: UIControlState.Normal)
btn.frame = CGRect(x : index * width, y:0, width:width,height: 44)
//4、将uibutton添加到UIScrollview上面
return btn
}
//5、将UIScrollview添加到控制器上面
view.addSubview(sc)
}
//要求:定义一个方法来创建UIScrollview
func creatScrollView(btnCount: () -> Int,btnWithIndex:(index:Int) -> UIView) -> UIScrollView
{
//1、创建一个scrollview
let sc = UIScrollView(frame: CGRect(x: 0, y: 100, width: 375, height: 44))
sc.backgroundColor = UIColor.redColor()
// let width = 80
9931
//2、创建N多个uibutton
let count = btnCount()
for i in 0..<count
{
/*
let btn = UIButton()
//3、设置UIButton的属性
btn.setTitle("标题\(i)", forState: UIControlState.Normal)
btn.frame = CGRect(x : i * width, y:0, width:width,height: 44)
//4、将uibutton添加到UIScrollview上面
sc.addSubview(btn)
*/
let subView = btnWithIndex(index: i)
sc.addSubview(subView)
sc.contentSize = CGSize(width: CGFloat(count) * subView.bounds.width, height: 44)
}
return sc
}
}
创建一个swift项目:
闭包类似于oc中block,可以通过下面的代码看出:
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() /*闭包的基本格式 { () -> () in 需要执行的代码 } */ /*闭包的几种格式: 1、将闭包通过实参传递给函数 2、如果闭包是函数的最后一个参数,那么闭包可以写在()的后面 3、如果韩式只接受一个参数,并且这个参数是闭包,那么这个()可以省略 */ /* 闭包的简写: 如果闭包没有参数也没有返回值,那么in之前的东西都可以删除,包括in */ loadData { () -> () in print("被回调了") } } func loadData(finished:()->()) { print("执行耗时操作") finished() } override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { dispatch_async(dispatch_get_global_queue(0, 0)) { () -> Void in print(NSThread.currentThread()) print("执行耗时的操作") dispatch_async(dispatch_get_main_queue(), { () -> Void in print(NSThread.currentThread()) print("回到主线程刷新UI") }) } } }
二、闭包的参数和返回值
实现一个UI界面。
uiscrollview上面添加了N个button,可以滚动uisrollview
要求:定义一个方法来创建UIScrollview
1、并且UIScrollview上有多少个按钮必须通过闭包的形式告诉该方法
2、并且如何创建按钮也需要通过闭包来创建
//
// ViewController.swift
// 闭包的返回值和参数
//
// Created by base on 16/09/19.
// Copyright © 2016年 base. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let sc = creatScrollView({ () -> Int in
return 5
}) { (index) -> UIView in
let width = 80
let btn = UIButton()
//3、设置UIButton的属性
btn.setTitle("标题\(index)", forState: UIControlState.Normal)
btn.frame = CGRect(x : index * width, y:0, width:width,height: 44)
//4、将uibutton添加到UIScrollview上面
return btn
}
//5、将UIScrollview添加到控制器上面
view.addSubview(sc)
}
//要求:定义一个方法来创建UIScrollview
func creatScrollView(btnCount: () -> Int,btnWithIndex:(index:Int) -> UIView) -> UIScrollView
{
//1、创建一个scrollview
let sc = UIScrollView(frame: CGRect(x: 0, y: 100, width: 375, height: 44))
sc.backgroundColor = UIColor.redColor()
// let width = 80
9931
//2、创建N多个uibutton
let count = btnCount()
for i in 0..<count
{
/*
let btn = UIButton()
//3、设置UIButton的属性
btn.setTitle("标题\(i)", forState: UIControlState.Normal)
btn.frame = CGRect(x : i * width, y:0, width:width,height: 44)
//4、将uibutton添加到UIScrollview上面
sc.addSubview(btn)
*/
let subView = btnWithIndex(index: i)
sc.addSubview(subView)
sc.contentSize = CGSize(width: CGFloat(count) * subView.bounds.width, height: 44)
}
return sc
}
}
相关文章推荐
- Swift Snapkit 看这篇基本就"够"了
- Swift讲解专题十三——下标访问
- swift 数据存储
- swift中便利函数的构造
- Cocopods第三方库管理工具创建Swift项目&OC项目就
- swift中KVC构造函数,和执行流程
- swift 中高德地图随时读取坐标地点的写法
- 所有接口添加plist文件的写法 swift
- 【Swift】反射(Reflection)的介绍
- swift base64转UIImage,UIImage转base64
- 什么是Swift
- swift: mutating关键字
- 第一个 swift 项目
- Swift -- 6.函数和闭包
- Swift 几个简单控件及上传系统相册照片
- Swift开发入门:按钮(UIButton)空间
- Swift讲解专题十二——方法
- swift post表单上传图片和数据
- OC调用Swift
- 6.swift 用在声明中的关键字