Я пытаюсь анимировать вид обложки в моем коде.По сути, крышка сдвигается вверх (закрывается) от экрана к экрану, и после того, как пользователь нажимает кнопку, крышка сдвигается вниз (открывается вверх) до конца экрана.
Мой код для перемещениякрышка вид на экран и в поле зрения работает отлично.Тем не менее, код для скольжения обложки вид вниз по экрану и вне поля зрения не работает!Начальная позиция скольжения крышки - это то, что кажется неправильным.Обложка сдвигается вниз, как и ожидалось, но начинается слишком высоко, так что анимация заканчивается там, где она должна начинаться.
У меня есть экранная запись об ошибке в действии (очевидно, замедлилась анимация, чтобы вы моглипосмотрите, что я имею в виду под ошибкой).Крышка, скользящая вниз, должна скользить вниз от своего первоначального положения, до которого она сдвинулась. Ссылка на запись .
Может кто-нибудь определить, где я ошибаюсь в своем коде?
func showScoresCover() {
verticalDistance = ScoresCoverView.frame.size.height
self.ScoresCoverView.frame.origin.y += verticalDistance
UIView.animate(
withDuration: 0.5,
delay: 0.25,
options: .curveEaseOut,
animations:
{ self.ScoresCoverView.frame.origin.y -= self.verticalDistance},
completion:
{ finished in
print("Score cover closed.")
})
}
func hideScoresCover() {
verticalDistance = ScoresCoverView.frame.size.height
UIView.animate(
withDuration: 0.5,
delay: 0.25,
options: .curveEaseIn,
animations:
{ self.ScoresCoverView.frame.origin.y += self.verticalDistance},
completion:
{ finished in
print("Score cover opened.")
})
}
РЕДАКТИРОВАТЬ
эй @ Nickolans спасибо заВаша помощь в этом вопросе.Итак ... У меня есть странное обновление для вас по этому запросу.Я реализовал ваш код, и он работает, если у меня есть предварительно запрограммированная кнопка, которая запускает showScoreCover и hideScoresCover.Оказывается, даже мой оригинальный код работает, но опять же, только если у меня есть предварительно запрограммированная кнопка, которая запускает функции показать / скрыть.
Однако мне нужно запустить функцию, используя кнопку, где я программно перенастраиваюкнопка делает.Я реализовал это с помощью .addTarget и нескольких селекторов, и эти селекторы будут отличаться в зависимости от того, где в игре находятся пользователи.
В любом случае, мой код выглядит так:
self.continueButton.addTarget(self, action: #selector(self.hideScoresCover), for: UIControlEvents.touchUpInside)
self.continueButton.addTarget(self, action: #selector(self.startTeamB), for: UIControlEvents.touchUpInside)
Первоначально я использовал только один .addTarget и включил hideScoresCover () в функцию startTeamB.Это привело к оригинальной проблеме, где крышка не скрывается правильно (начинается слишком высоко на экране).Поэтому я разделил его на две вышеупомянутые .addTargets, и это также приводит к той же проблеме.ОДНАКО, если я закомментирую всю строку .addTarget выше, относящуюся к селектору startTeamB, и оставлю селектор относящимся к hideScoresCover, то крышка будет показана и скрыта абсолютно, как я хочу, анимация идеальна.Это означает, что лежащий в основе код в hideScoresCover () работает нормально, но проблема заключается в том, что каким-то образом возникает проблема при запуске hideScoresCover при нажатии кнопки продолжения.
У вас есть идея, почему это так?каким-то образом эта цель continueButton запускается некорректно всякий раз, когда есть две addTargets, или когда есть только одна цель, но hideScoresCover () включен в startTeamB ().
Я озадачен, почему это будет иметь место.startTeamB () вообще не является сложной функцией, поэтому не должна мешать hideScoresCover ().Таким образом, это приводит меня только к выводу, что метод continueButton должен запускать hideScoresCover (), когда он либо является отдельной целью в дополнение к тому, что startTeamB является целью, либо когда hideScoresCover () включен в сам startTeamB.Необычно, что он работает правильно, когда единственным .addTarget является селектор, вызывающий hidesScoresCover?
@objc func startTeamB() {
self.UpdateTeam() //Just changes the team name
self.TeamBTimer() //Starts a timer to countdown teamB's remaining time
self.TeamAIndicator.isHidden = true //Just hides teamA image
self.TeamBIndicator.isHidden = false //Just shows teamB image
print("Hintify: ","-----Start Team B.")
}