Как добавить ограничения к представлению внутри подпредставления StackView - PullRequest
1 голос
/ 20 января 2020

В моей тестовой программе есть вертикальный вид стека, в его третьем подпредставлении (зеленый внизу) я хочу добавить красный прямоугольник в его центр. Я попытался привязать к centerXAnchor и centerXAnchor, но это не работает. Я подозреваю, что это потому, что зеленый вид не использует якорь X и Y, так как его размер и положение управляются вертикальным стеком. Как правильно расположить красный прямоугольник внутри зеленого вида? Вот мои коды и скриншоты:

class ViewController: UIViewController {
    @IBOutlet var greenView: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()
        let testView = UIView(frame: CGRect(x: 0,y: 0,width: 50,height: 50))
        testView.backgroundColor = .red
        greenView.addSubview(testView)
        greenView.translatesAutoresizingMaskIntoConstraints = false

        testView.centerXAnchor.constraint(equalTo: greenView.centerXAnchor).isActive = true
        testView.centerYAnchor.constraint(equalTo: greenView.centerYAnchor).isActive = true
    }
}

Это раскадровка. Единственными ограничениями являются высота первого вида = высота второго вида и высота зеленого вида = 0,8 высоты StackView:

Here is the story board

Это результат:

Here is the result

1 Ответ

0 голосов
/ 20 января 2020

виновником этой ошибки является greenView.translatesAutoresizingMaskIntoConstraints = false, что я делаю, задаю ширину, высоту с помощью Anchor api

let testView = UIView(frame: CGRect(x: 0,y: 0,width: 0,height: 0))
        testView.backgroundColor = .white
        greenView.addSubview(testView)
        testView.translatesAutoresizingMaskIntoConstraints = false

        testView.centerXAnchor.constraint(equalTo: greenView.centerXAnchor).isActive = true
        testView.widthAnchor.constraint(equalToConstant: 50).isActive = true
        testView.heightAnchor.constraint(equalToConstant: 100).isActive = true
        testView.centerYAnchor.constraint(equalTo: greenView.centerYAnchor).isActive = true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...