Ios 使用init(repeating:count)创建的视图上的Swift addSubview()不';行不通

Ios 使用init(repeating:count)创建的视图上的Swift addSubview()不';行不通,ios,swift,initialization,Ios,Swift,Initialization,下面是一个ViewController,它使用init(重复:count)创建4个子视图 在viewDidLoad中,我将它们添加为子视图并设置它们的框架。当我运行应用程序时,只添加最后一个视图 class ViewController: UIViewController { let subviews = [UIView].init(repeating: UIView(), count: 4) override func viewDidLoad() { sup

下面是一个ViewController,它使用init(重复:count)创建4个子视图

在viewDidLoad中,我将它们添加为子视图并设置它们的框架。当我运行应用程序时,只添加最后一个视图

class ViewController: UIViewController {

    let subviews = [UIView].init(repeating: UIView(), count: 4)

    override func viewDidLoad() {
        super.viewDidLoad()
        for i in 0..<subviews.count {
            self.view.addSubview(subviews[i])
            self.subviews[i].backgroundColor = UIColor.red
            self.subviews[i].frame = CGRect(x: CGFloat(i) * 35, y: 30, width: 30, height: 30)
        }
    }

}
类ViewController:UIViewController{
让子视图=[UIView].init(重复:UIView(),计数:4)
重写func viewDidLoad(){
super.viewDidLoad()

对于0中的i..您已经在数组中放置了四次相同的
UIView
实例。您的
viewDidLoad
只会移动单个视图。您需要创建四个独立的
UIView
实例

let subviews = (0 ..< 4).map({ _ in UIView() })
让子视图=(0..<4).map({UIView()中的})

谢谢!你发现了我的错误。我想你也可以删除地图闭包上的外圆括号。你可以,但我不希望在这种情况下删除。
let subviews = (0 ..< 4).map({ _ in UIView() })