您的位置:首页 > 其它

闭包的返回值和参数

2016-02-03 22:26 302 查看
class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

/*
let sc = UIScrollView(frame: CGRect(x: 0, y: 100, width: 375, height: 44))
sc.backgroundColor = UIColor.redColor()
let count = 15
let width = 50
for i in 0..<count{
let label = UILabel()
label.backgroundColor = UIColor.greenColor()
label.textColor = UIColor.darkGrayColor()
label.font = UIFont.systemFontOfSize(17)
label.text = "text\(i)"
label.frame = CGRect(x: i * width, y: 0, width: width, height: 44)
sc.addSubview(label)
}

sc.contentSize = CGSize(width: count * width, height: 44)
view.addSubview(sc)
*/

let sc = createScrollView({ () -> Int in
return 15//第一个参数的闭包返回
}) { (index) -> UILabel in
let width = 50
let label = UILabel()
label.backgroundColor = UIColor.greenColor()
label.textColor = UIColor.darkGrayColor()
label.font = UIFont.systemFontOfSize(17)
label.text = "text\(index)"
label.frame = CGRect(x: index * width, y: 0, width: width, height: 44)
return label//第二个参数的闭包返回
}
view.addSubview(sc)

}

//方法的参数有两个参数:一个闭包返回参数,一个闭包返回UILabel
func createScrollView(labelCount: ()->Int, labelWithIndex: (index:Int)->UILabel) -> UIScrollView{
// 1.创建UIScrollView
let sc = UIScrollView(frame: CGRect(x: 0, y: 100, width: 375, height: 44))

let count = labelCount()
//        let width = 50

// 2.遍历创建UILabel
for i in 0..<count{
/*
let label = UILabel()
label.backgroundColor = UIColor.greenColor()
label.textColor = UIColor.darkGrayColor()
label.font = UIFont.systemFontOfSize(17)
label.text = "text\(i)"
label.frame = CGRect(x: i * width, y: 0, width: width, height: 44)
sc.addSubview(label)
*/
let label = labelWithIndex(index: i)
sc.addSubview(label)
//CGFloat(count)  :不同类型的数据不能直接进行运算
sc.contentSize = CGSize(width: CGFloat(count) * label.bounds.width, height: 44)
}

// 返回UIScrollView
return sc
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: