2017-02-04 4 views
0

В приложении «Фото» при редактировании изображения (см. Снимок экрана) нижний ящик слайдов с настройками. Я хотел бы реализовать эту функцию для своего приложения. Какой был бы лучший способ сделать это?Как я могу реализовать блок редактирования iPhone iPhone?

Я собираюсь создать UIView с размытым эффектом. Однако я не уверен, как создать скользящую анимацию. Любые намеки будут оценены.

Связанный вопрос: Поскольку этот UIView будет закрывать большую часть основного вида, можно ли его редактировать вне основного вида (в раскадровке), чтобы он не мешал основному виду?

iPhone Photos

ответ

1

Я работаю - на самом деле полировка - что-то подобное. Мой стиль заключается в разработке такого рода кода. Если вы идете по этому маршруту, ваш второй вопрос будет спорным.

В коде я создаю панель инструментов, которая поворачивается снизу вправо по ориентации с использованием автоматической компоновки. Эта панель инструментов, такая как панели управления, которые выдвигаются, - это подклассы UIVisualEffectView для размытия, о котором вы говорите. Мне нравится «легкий» эффект для моего приложения, но на скриншоте у вас есть, вероятно, «темный».

«Доски», UIVisualEffectView также имеют UIButton, UISlider и UILabel. Это приводит к тому, что элементы управления отображаются выше размытия.

Используя автоматическую компоновку, я создаю два массива (плюс ползунки) ограничений - для портрета, один для пейзажа. (Это нужно только для вращения, как описано выше. Если вы хорошо держите вещи внизу в ландшафте, вы можете уйти без массивов.) Я активирую/деактивирую в соответствии с ориентацией.

Вот ключ: для «скольжения» на доске я устанавливал высоту (или ширину в ландшафте) на ноль и скрывал подвид, а затем анимировал. Чтобы выдвинуть панель, я делаю наоборот. С несколькими платами I (снова) используйте деактивировать/активировать, но вы можете использовать isActive = false/true.

После установки ограничений я просто анимирую представление. Я делаю это из панели инструментов, поэтому код:

UIView.animate(withDuration: 0.3) { self.superview?.layoutIfNeeded() } 

Если вы сделаете это с контроллера зрения, настроить вызов layoutIfNeeded().

Это много кодировки, но независимо от того, используете ли вы IB или прямой код, у вас будет много работы перед вами. Я думаю, что вы также найдете настройку и тестирование ограничений через IB более сложной задачей, чем если бы вы сделали это прямо в коде.

Смежные вопросы