использовать цикл для нескольких подпредставлений (swift4) - PullRequest
0 голосов
/ 03 апреля 2019

Мой код ниже объявляет переменные, а затем добавляет их в подпредставление представлений, также объявляя ограничения. Я хочу посмотреть, есть ли в любом случае, я могу написать этот код короче. С 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
  }

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

Мне нравится помещать все свойства в массив и использовать для каждого замыкания установку вызова одной и той же функции внутри замыкания.

    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
        }
    }

Если кто-то, использующий раскадровку и розетку, также может добавить розеткусобрать и связать все мнения, которые вы хотите. коллекция розеток

0 голосов
/ 03 апреля 2019

Вы можете добавить все подпредставления в массив и выполнять итерации следующим образом:

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