IOS, используя ограничения, чтобы скрыть вид - PullRequest
0 голосов
/ 16 сентября 2018

Почему, если у меня есть простой view-контроллер с кнопкой, «управляющим представлением» и табличным представлением под ним, я не могу заставить работать логику, которая расширит табличное представление, чтобы охватить «представление», когда Нажмите кнопку и затем восстановите, если нажать снова. Таблица будет перекрывать «контрольный вид», но при повторном нажатии не «восстанавливает» таблицу под «контрольным видом»

@IBAction func buttonPressed(_ sender: Any) {

        if bControlHide == false {
            myTableView.translatesAutoresizingMaskIntoConstraints = false
            myControlView.translatesAutoresizingMaskIntoConstraints = false
            myTableView.topAnchor.constraint(
                equalTo: myControlView.topAnchor).isActive = true
            bControlHide = true
        }
        else {
            bControlHide = false
            myTableView.translatesAutoresizingMaskIntoConstraints = false
            myControlView.translatesAutoresizingMaskIntoConstraints = false
            myTableView.topAnchor.constraint(
                equalTo: myControlView.bottomAnchor).isActive = true
        }
    }

Ответы [ 3 ]

0 голосов
/ 17 сентября 2018

Если ваш controlView имеет фиксированную высоту,

1) Создайте выход для высоты controlView от раскадровки до ViewController и установите его на 0, когда вам нужно его скрыть.Установите другое значение, когда вы раскроете.

Не забудьте установить 0 controlView нижнее пространство на tableView, иначе tableView не покроет вашу controlView.

0 голосов
/ 17 сентября 2018

Обратите внимание на следующие коды:

myTableView.topAnchor.constraint(equalTo:myControlView.topAnchor).isActive = true
myTableView.topAnchor.constraint(equalTo: myControlView.bottomAnchor).isActive = true

Каждый раз, когда вы вызываете myTableView.topAnchor.constraint, добавляется новое ограничение, это не то, что вы хотите.

Так что, пожалуйста,создайте и сохраните эти два ограничения для переменных-членов, а затем активируйте или деактивируйте их в соответствии с вашими потребностями.

Кстати, вам не нужно устанавливать translatesAutoresizingMaskIntoConstraints каждый раз, когда вы нажимаете кнопку, устанавливайте ее один раз в xib илив viewDidLoad

0 голосов
/ 16 сентября 2018

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

Первоначальная настройка будет:

  • константа высоты больше 0
  • приоритет по высоте 1000
  • нижнее ограничение равно 0
  • нижний приоритет - 750

Когда вы нажимаете на кнопку, вам просто нужно изменить приоритеты:

  • приоритет по высоте - 750
  • нижний приоритет - 1000
...