美文网首页
swift语法--12-2闭包的参数和返回值

swift语法--12-2闭包的参数和返回值

作者: 20b347b28fc9 | 来源:发表于2016-03-12 01:29 被阅读103次

Swift语法--12-2闭包的参数和返回值


先看一个普通的例子:在一个scrollView中添加15个button

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 1.创建UIScrollview
        let scV = UIScrollView(frame: CGRect(x: 0, y: 200, width: UIScreen.mainScreen().bounds.width, height: 50))
        scV.backgroundColor = UIColor.redColor()
        
        // 2.通过循环创建15个按钮
        let count = 15
        let width: CGFloat = 80
        let height = scV.bounds.height
        
        for i in 0..<count
        {
            let btn = UIButton()
            btn.frame = CGRect(x: CGFloat(i) * width, y: 0, width: width, height: height)
            btn.backgroundColor = UIColor.grayColor()
            
            btn.setTitle("第\(i)", forState: UIControlState.Normal)
            //将button添加到scrollView中
            scV.addSubview(btn)
            
        }
        //设置scrollView的contentSize
        scV.contentSize = CGSize(width: CGFloat(count) * width, height: height)
        
        //将scrollView添加到view上去
        view.addSubview(scV)
    }
}

需求:

  • 要求创建UIScrollview以及按钮通过一个方法来创建
  • 并且按钮的个数必须通过闭包来指定
  • 并且如何创建按钮也必须通过闭包来指定(UIScrollview上面添加什么控件通过闭包传递)
class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        let scrollV = creatScrollV({ () -> Int in
            return 20
            }) { () -> UIButton in
                let btn = UIButton()
                btn.backgroundColor = UIColor.grayColor()
                return btn
        }
        view.addSubview(scrollV)
    }
    
    func creatScrollV (getCount:()->Int, getSingleButton: ()->UIButton)->UIScrollView{
        let scrollV = UIScrollView()
        scrollV.backgroundColor = UIColor.redColor()
        scrollV.frame = CGRect(x: 0, y: 200, width: UIScreen.mainScreen().bounds.width, height: 80)
        
        //添加按钮
        let count = getCount()  ////闭包作为参数传过来
        let height = scrollV.bounds.height
        let width:CGFloat  = 70
        
        for i in 0..<count{
            //闭包作为参数传过来
            let btn = getSingleButton()
            btn.setTitle("\(i)", forState: UIControlState.Normal)
            btn.frame = CGRect(x: CGFloat(i) * width, y: 0, width: width, height: height)
            
            scrollV.addSubview(btn)
        }
        scrollV.contentSize = CGSize(width: width * CGFloat(count), height: height)
        return scrollV
    }
}

相关文章

  • swift语法--12-2闭包的参数和返回值

    Swift语法--12-2闭包的参数和返回值 先看一个普通的例子:在一个scrollView中添加15个butto...

  • 项目中闭包的使用Swift

    Swift闭包类似OC的代码块(block) 语法 先来定义一个 有参数,有返回值 闭包 实际项目中, 举个例子...

  • Swift-闭包

    Swift-闭包 Swift闭包的含义 闭包是自包含的功能代码块,可以用作函数的参数或者返回值 闭包可以捕获上下文...

  • swift 中闭包的写法与使用

    swift 中闭包的写法与使用 1没有参数没有返回值得情况 2没有参数,有返回值的情况 , 3有参数 没有返回值 ...

  • swift4 闭包Closure参数捕获表

    一、swift闭包的定义 推荐别名定义闭包,因为很容易、清楚的看出闭包的参数和返回值。别纠结为什么用in作为传入参...

  • 7_闭包

    Swift 的闭包表达式拥有简洁的风格,并鼓励在常见场景中进行语法优化,主要优化如下: 利用上下文推断参数和返回值...

  • 十三、Swift3.0之闭包的定义和GCD实际使用

    闭包定义的三种形式(无参数无返回值、有参数无返回值、有参数有返回值) Swift3.0中GCD的写法:

  • 闭包

    Swift中的闭包有很多优化的地方: 根据上下文推断参数和返回值类型 从单行表达式闭包中隐式返回(也就是闭包体只有...

  • 闭包

    Swift闭包(closures)有很多优化的地方 根据上下文推断参数和返回值类型 从单行表达式闭包中隐式返回(也...

  • Swift基础之闭包

    闭包 Swift对闭包进行了简化: 利用上下文推断参数和返回值类型 隐式返回单表达式闭包,即单表达式闭包可以省略r...

网友评论

      本文标题:swift语法--12-2闭包的参数和返回值

      本文链接:https://www.haomeiwen.com/subject/zmjxlttx.html