Swift 3 - 在视图数组上设置属性

Ran*_*rns 2 arrays immutability ios swift

我以前能够通过将多个视图(UIImageViews、UILabels 和 UIButtons)添加到一个数组,然后遍历该数组以进行如下属性更改来清理我的代码:

var hideViews = [imageView1, imageView2, label1, button1, button2]
      for eachView in hideViews {
          eachView.isHidden = true
      }
Run Code Online (Sandbox Code Playgroud)

然后变成了另一个版本的 Swift:

var hideViews = [imageView1, imageView2, label1, button1, button2] as [Any]
      for eachView in hideViews {
          (eachView as AnyObject).isHidden = true
      }
Run Code Online (Sandbox Code Playgroud)

我还可以使用它一次移动多个视图:

for view in viewsToMove {
    (view as AnyObject).frame = CGRect(x: view.frame.origin.x - 30, y: view.frame.origin.y, width: view.frame.width, height: view.frame.height)
}
Run Code Online (Sandbox Code Playgroud)

我现在收到错误:

无法分配给类型为“Bool!”的不可变表达式

无法分配给类型为“CGRect!”的不可变表达式

有人知道我在这里缺少什么,以便在 Swift 3 中做到这一点吗?

谢谢!

Luc*_*tti 6

给定一个数组 UIView

let hideViews: [UIView] = ...
Run Code Online (Sandbox Code Playgroud)

您可以隐藏每个视图

hideViews.forEach { $0.isHidden = true }
Run Code Online (Sandbox Code Playgroud)

每个视图向左移动30 个点

hideViews.forEach { $0.frame.origin.x -= 30 }
Run Code Online (Sandbox Code Playgroud)

两者兼而有之

hideViews.forEach {
    $0.isHidden = true
    $0.frame.origin.x -= 30
}
Run Code Online (Sandbox Code Playgroud)