Скрыть один UIView и показать другой - PullRequest
0 голосов
/ 28 сентября 2018

Когда я нажимаю на сегмент моего UISegmentedControl, я хочу, чтобы отображался один из двух UIViews.Но как мне это устроить, чтобы я показывал только новый взгляд.В настоящее время я звоню thisview.removeFromSuperview() на старом, а затем настраиваю все с нуля.Я также попытался установить все атрибуты HeightConstants подпредставлений представлений на ноль, а затем установить нулевые значения параметраConConstants самого представления, но я бы предпочел избежать этой операции с ограничениями.

Какие существуют лучшие подходы?

Ответы [ 2 ]

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

Основываясь на ответах @rmaddy и @CSmiths, я построил следующую функцию:

func changeView(newView: UIView, oldView: UIView) {
    newView.isHidden = false
    newView.alpha = 0
    UIView.animate(withDuration:0.4, animations: {
        oldView.alpha = 0
        newView.alpha = 1
    }) { (result: Bool) in
        oldView.isHidden = true
    }
}

Теперь я чувствую себя тупым из-за всех часов, потраченных на эту операцию с ограничениями.: |

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

Согласитесь с @rmaddy об использовании скрытого свойства UIView, приятного простого способа заставить представление не отображаться, но все же занимать свое место в иерархии представлений и системе ограничений.

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

UIView.animate(withDuration:0.4, animations: {
 myView.alpha = 0
}) { (result: Bool) in
 myView.isHidden = true
}

Это приведет к исчезновению альфа в представлении "myView", а затем по завершении установите его скрытым.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...