swift 基础语法4

一、闭包的基本使用:

创建一个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
        //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
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值