使用循环到几个子视图(swift4)

问题描述 投票:0回答:2

下面的代码是声明变量,然后将它们添加到视图子视图中,同时声明约束。我想知道是否有我可以写这段代码更短。使用view.addSubview(imageA)和imageA.translatesAutoresizingMaskIntoConstraints = false我想看看是否还有我可以添加所有变量,所以它像imageA,text,textBackward.addSubview(theName)

var imageA = UIImageView()
var text = UILabel()
var theName = UILabel()
var textForward = UIButton()
var textBackward = UIButton()
var map = UIButton()
var settings = UIButton()

override func viewDidLoad() {     
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    view.addSubview(imageA)
    view.addSubview(text)

    view.addSubview(theName)
    view.addSubview(textForward)
    view.addSubview(textBackward)
    view.addSubview(map)
     view.addSubview(settings)

    imageA.translatesAutoresizingMaskIntoConstraints = false
    text.translatesAutoresizingMaskIntoConstraints = false
    textBackward.translatesAutoresizingMaskIntoConstraints = false
    settings.translatesAutoresizingMaskIntoConstraints = false
    theName.translatesAutoresizingMaskIntoConstraints = false
    map.translatesAutoresizingMaskIntoConstraints = false

    textForward.translatesAutoresizingMaskIntoConstraints = false
  }
ios loops for-loop swift4 var
2个回答
0
投票

您可以在数组中添加所有子视图并像这样迭代

[imageA,text,theName,textForward,textBackward,map,settings].forEach({
            $0.translatesAutoresizingMaskIntoConstraints = false
            self.view.addSubview($0)
        })

1
投票

对我来说,我喜欢将所有属性放到一个数组中,并使用每个闭包来设置在闭包内调用相同的函数。

    var imageA = UIImageView()
    var text = UILabel()
    var theName = UILabel()
    var textForward = UIButton()
    var textBackward = UIButton()
    var map = UIButton()
    var settings = UIButton()

    lazy var collection = [imageA, text, theName, textForward, textBackward, map, settings]

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        collection.forEach { (view) in
            self.view.addSubview(view)
            view.translatesAutoresizingMaskIntoConstraints = false
        }
    }

如果使用故事板和插座的人也可以添加插座集合并链接您想要的所有视图。 outlet collection

© www.soinside.com 2019 - 2024. All rights reserved.