Я работаю над приложением, в котором я показываю UITableView. Поверх UITableView есть фильтр кнопок. Теперь, нажав эту кнопку, я хочу анимировать UIVIEW для анимации с правой стороны экрана на левую сторону экрана. И он должен анимироваться, пока не достигнет 70 процентов ширины экрана.
Теперь это сделает предыдущий вид немного темнее, я хочу, чтобы он выглядел и чувствовал себя так же, как ящик навигации в Android. но это покажет только настройки фильтров в этом UIView.
Я искал, и там слишком много библиотек, чтобы выполнить задачу, которую я хотел, но я хочу написать код самостоятельно и анимировать UIView или дизайн Nib для этого.
Есть ли способ выполнить то, что я хотел, без использования какой-либо библиотеки или чего-то еще? Пожалуйста, дайте мне знать, я жду. Заранее спасибо.
внутри него есть какие-то виды, я должен также установить их ширину?





Вы можете легко выполнить анимацию, если используете Auto Layout, играя с ограничениями представления. Вы можете ограничить конечную привязку представления ведущей привязкой представления (представление будет за пределами экрана), добавить ссылку на ограничение в коде (путем добавления IBOutlet) и поиграть с его константой, когда вы хотите показать или скрыть его. (например, вы можете установить константу равной ширине представления, которое вы хотите отобразить).
Now doing this it will make Previous view a little darker, I want to make a look and feel same like a Navigation drawer in android. but this will only show the Filters settings in that UIView.
Чтобы добиться этого эффекта, вы можете добавить черный вид поверх табличного представления и настроить его альфа-значение. Когда Slide In UIView скрыт, вы можете скрыть его, а когда он отображается, вы можете показать его.
Способ, которым мне нравится анимировать представления в подобных случаях, заключается в использовании преобразования представления, которое сохраняет макет и внешний вид представления и, как правило, будет выглядеть лучше, чем изменение ширины представления.
UIView.animate(withDuration: 0.35, animations: {
let moveLeft = CGAffineTransform(translationX: -(view.bounds.width * 0.7), y: 0.0)
viewController.view.transform = moveLeft
})
Чтобы вернуть представление в нормальное положение, просто снова установите преобразование, используя 0,0 в качестве значения translationX.
UIView.animate(withDuration: 0.35, animations: {
let zero = CGAffineTransform(translationX: 0.0, y: 0.0)
viewController.view.transform = zero
})
запустите свой UIView с нулевой шириной, затем используйте UIView.animate, чтобы установить ширину соответственно.