У меня есть анимация в прошивке со следующим кодом:Choppy анимации в прошивкой
view.layoutIfNeeded()
UIView.animateWithDuration(0.3, delay: 0, options: .CurveEaseInOut, animations: {
// constraints which are unrelated to drawingResultsController
self.leadingSpaceToContainerViewConstraint.constant = 0
self.trailingSpaceToContainerViewConstraint.constant = 0
// This controller doesn't have any constraints
drawingResultsController.view.frame.origin = CGPoint(x: self.view.bounds.width, y: 0)
self.view.layoutIfNeeded()
}, completion: { finished in
drawingResultsController.view.removeFromSuperview()
drawingResultsController.removeFromParentViewController()
drawingResultsController.didMoveToParentViewController(nil)
})
однако, анимация не выглядит очень текучей. Это не ужасно, но вы можете определенно сказать, что это способ до 30 кадров в секунду. Кто-нибудь знает, почему это может быть? Я уже проверил, что все идет по основному потоку.
Дополнительные детали: вид
материнского контроллера имеет подвид, который прижат к краям это SuperView (главный вид), те ограничения видели выше. Этот подсмотр содержит основные виды контроллера (т. Е. Он создает эффект параллакса, так как рисунок ResultsController скользит по экрану и выходит из него). drawingResultsController - это контроллер детского представления, добавленный в качестве подзона основного вида, и у него нет никаких ограничений. Он скользит по экрану и выходит из него, и это код для его выталкивания.
Таким образом, вид, перемещаемый ограничениями, является братом вида изображения ResultsController. Оба являются прямым подзором основного вида.
РЕДАКТИРОВАТЬ:
Уменьшение анимации именно этот
UIView.animateWithDuration(0.3, delay: 0, options: .CurveEaseInOut, animations: {
drawingResultsController.view.frame.origin = CGPoint(x: self.view.bounds.width, y: 0)
}, completion: nil)
улучшает частоту кадров немного, но она продолжает быть проблемой. Это более заметно при установке более длительного времени анимации. Использование процессора и памяти выглядит полностью нормальным во время анимации.
Спасибо
Вы используете другие приложения @ одновременно? О какой платформе вы говорите? – user3069232
Во-первых, ограничение есть на каком виде? Если они находятся на рисункеResultsController, вы не должны использовать фрейм. Также это вид, который мгновенно удаляется. Затем вам нужно использовать альфу, чтобы затемнить вид, а затем удалить его. –
Спасибо за ответ. Добавлено несколько деталей на вопрос. Проблема возникает как в симуляторе, так и в самом устройстве. – diegomontoyas