Добавление подпредставления к другому подпредставлению с использованием Auto Layout - PullRequest
0 голосов
/ 25 октября 2018

Я уверен, что мне здесь не хватает чего-то глупого, но у меня есть mainView, subviewA и subviewB.Я пытаюсь добавить subviewB к subviewA и закрепить его внутри subviewA, однако это не привязка (просто остается в верхнем левом углу. Однако, если я добавлю subviewB в mainView, а затем закреплю его, он будет работать нормально.

Пример (с использованием пользовательской функции привязки, которая, как мне кажется, не требует пояснений):

addSubview(questionContainerView)
questionContainerView.anchor(topAnchor, left: leftAnchor, bottom: centerYAnchor, right: rightAnchor, topConstant: 0, leftConstant: 0, bottomConstant: 0, rightConstant: 0, widthConstant: 0, heightConstant: 0)


// does not work
questionContainerView.addSubview(questionTextLabel)
questionTextLabel.anchor(questionContainerView.topAnchor, left: questionContainerView.leftAnchor, bottom: questionContainerView.bottomAnchor, right: questionContainerView.rightAnchor, topConstant: 25, leftConstant: 10, bottomConstant: 25, rightConstant: 10, widthConstant: 0, heightConstant: 0)

// does work
addSubview(questionTextLabel)
questionTextLabel.anchor(questionContainerView.topAnchor, left: questionContainerView.leftAnchor, bottom: questionContainerView.bottomAnchor, right: questionContainerView.rightAnchor, topConstant: 25, leftConstant: 10, bottomConstant: 25, rightConstant: 10, widthConstant: 0, heightConstant: 0)

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Я попробовал один и тот же код с другим цветом фона и не нашел в этом ничего плохого, возможно, из-за того же цвета фона он не будет виден.

Пожалуйста, найдите код ниже

        self.view.addSubview(questionContainerView)
    questionContainerView.anchor(top: self.view.topAnchor, left: self.view.leftAnchor, bottom: self.view.centerYAnchor, right: self.view.rightAnchor, topConstant: 0, leftConstant: 0, bottomConstant: 0, rightConstant: 0, widthConstant: 0, heightConstant: 0)
    questionContainerView.backgroundColor = .blue

    questionContainerView.addSubview(questionTextLabel)
    questionTextLabel.anchor(top: questionContainerView.topAnchor, left: questionContainerView.leftAnchor, bottom: questionContainerView.bottomAnchor, right: questionContainerView.rightAnchor, topConstant: 25, leftConstant: 10, bottomConstant: 25, rightConstant: 10, widthConstant: 0, heightConstant: 0)
    questionTextLabel.backgroundColor = .black

please find the screenshot attached

0 голосов
/ 25 октября 2018

Вы не можете добавить одно и то же представление к двум отдельным родительским представлениям.Как только вы добавите его в другое представление, оно будет удалено из предыдущего представления.Если вы хотите, чтобы представление метки было в обоих представлениях, просто создайте два его экземпляра.

questionContainerView.addSubview(questionTextLabel) // first time
addSubview(questionTextLabel) // second time the questionTextLabel is removed from questionContainerView
...