NSLayoutConstraint правила - PullRequest
       6

NSLayoutConstraint правила

0 голосов
/ 29 августа 2018

Я не вижу строку меню (синий вид), когда я пишу этот код, но когда я изменяю параметр с 50 на 100, это показывает. Кажется, что он лежит за полем статуса. Я хочу, чтобы ограничения относились к строке состояния, а не к верхней части экрана. Кто-то, кто знает почему?

func setupMenuBar(){
    view.addSubview(menuBar)
    view.addConstriantswithFormat(format: "H:|[v0]|", views:menuBar)
    view.addConstriantswithFormat(format: "V:|[v0(50)]", views:menuBar)
} 

Here is the interface how it looks like

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Вам необходимо ограничить свой menuBar вид только безопасной областью вида , чтобы выровнять его по нижней части навигационной панели.

Хотя это сложно сделать с помощью Visual Format Language. Этот альтернативный метод должен быть легким для понимания:

    view.addSubview(menuBar)

    let guide = view.safeAreaLayoutGuide

    NSLayoutConstraint.activate([

        menuBar.topAnchor.constraint(equalTo: guide.topAnchor, constant: 0.0),

        menuBar.leadingAnchor.constraint(equalTo: guide.leadingAnchor, constant: 0.0),
        menuBar.trailingAnchor.constraint(equalTo: guide.trailingAnchor, constant: 0.0),

        menuBar.heightAnchor.constraint(equalToConstant: 50.0),

        ])
0 голосов
/ 29 августа 2018

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

Я предпочитаю использовать якоря. Гораздо легче читать.

Например (Swift):

blueView.topAnchor.constraint(equalTo: redView.bottomAnchor).isActive = true
blueView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
blueView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
blueView.heightAnchor.constraint(equalToConstant: 50).isActive = true
...