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
}
}
闭包的返回值和参数
最新推荐文章于 2022-06-21 11:27:57 发布