Я работаю - на самом деле полировка - что-то подобное. Мой стиль заключается в разработке такого рода кода. Если вы идете по этому маршруту, ваш второй вопрос будет спорным.
В коде я создаю панель инструментов, которая поворачивается снизу вправо по ориентации с использованием автоматической компоновки. Эта панель инструментов, такая как панели управления, которые выдвигаются, - это подклассы UIVisualEffectView
для размытия, о котором вы говорите. Мне нравится «легкий» эффект для моего приложения, но на скриншоте у вас есть, вероятно, «темный».
«Доски», UIVisualEffectView
также имеют UIButton, UISlider и UILabel. Это приводит к тому, что элементы управления отображаются выше размытия.
Используя автоматическую компоновку, я создаю два массива (плюс ползунки) ограничений - для портрета, один для пейзажа. (Это нужно только для вращения, как описано выше. Если вы хорошо держите вещи внизу в ландшафте, вы можете уйти без массивов.) Я активирую/деактивирую в соответствии с ориентацией.
Вот ключ: для «скольжения» на доске я устанавливал высоту (или ширину в ландшафте) на ноль и скрывал подвид, а затем анимировал. Чтобы выдвинуть панель, я делаю наоборот. С несколькими платами I (снова) используйте деактивировать/активировать, но вы можете использовать isActive = false/true.
После установки ограничений я просто анимирую представление. Я делаю это из панели инструментов, поэтому код:
UIView.animate(withDuration: 0.3) { self.superview?.layoutIfNeeded() }
Если вы сделаете это с контроллера зрения, настроить вызов layoutIfNeeded()
.
Это много кодировки, но независимо от того, используете ли вы IB или прямой код, у вас будет много работы перед вами. Я думаю, что вы также найдете настройку и тестирование ограничений через IB более сложной задачей, чем если бы вы сделали это прямо в коде.