2014-10-05 2 views
1

В моем приложении у меня есть два вида в моем основном контроллере. Один из них - для ввода информации о вашем бюджете. Другой - просмотр текущего состояния вашего бюджета.Проблемы с анимационным представлением для новых размеров экрана

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

In viewWillAppear У меня есть код, который выполняется, если кнопка ввода была нажата, но представление не было перемещено (это происходит, когда приложение полностью закрыто и снова открыто).

Кнопка сброса делает противоположную кнопку ввода и уменьшает вид назад.

Проблема в том, что иногда при нажатии кнопки сброса вид начинает скользить вверх, а затем останавливается в нижней части окна. Все это отлично работало, прежде чем я обновил свое приложение, чтобы работать на iPhone 6 и iPhone 6 Plus, поэтому я предполагаю, что с моими координатными вычислениями что-то не так. Я просто не смог понять это. Вот как это выглядит, когда она застревает:

enter image description here

Кнопка сброса:

self.budgetEntryView.hidden = false 
    resetButtonNav.enabled = false 

    UIView.animateWithDuration(0.3, delay: 0, options: .CurveLinear, animations: { 
     self.budgetEntryView.center = CGPointMake(self.budgetEntryView.center.x, self.budgetEntryView.center.y - 500) 
     }, completion: { (finished:Bool) in 
      self.budgetDisplayView.hidden = true 

viewWillAppear:

 if enterButtonTapped == true && self.budgetEntryView.center.y != 784 { 

     UIView.animateWithDuration(0.3, delay: 0, options: .CurveLinear, animations: { 
      self.budgetEntryView.center = CGPointMake(self.budgetEntryView.center.x, self.budgetEntryView.center.y + 500) 
      }, completion: { (finished:Bool) in self.budgetEntryView.hidden = true }) 
     } 

Кнопка Enter:

 UIView.animateWithDuration(0.3, delay: 0, options: .CurveLinear, animations: { 
     self.budgetEntryView.center = CGPointMake(self.budgetEntryView.center.x, self.budgetEntryView.center.y + 500) 
     }, completion: { (finished:Bool) in self.budgetEntryView.hidden = true }) 
+0

Используете ли вы autolayout? Если это так, вы можете подумать об анимации ограничений вместо ширины/высоты/позиции представлений. – zisoft

+0

Нет. Раньше я пытался использовать автомат, но мне это действительно не понравилось. Я использую его для Today Widget, так как это гораздо более простой интерфейс, но я хочу избежать его использования для основного приложения. Нет ничего плохого в коде, который может вызвать проблему, которую вы видите? – user3746428

+0

Извините, я не вижу ничего очевидного. Поместите несколько инструкций println() в свой код, чтобы проверить, что-то происходит с центральной координатой. И лучше использовать 'CGPoint (...)' вместо 'CGPointMake (...)' – zisoft

ответ

0

Th Исправление было довольно простым, как только я использовал println, как было предложено найти проблему.

В принципе, я просто должен был добавить координаты, вид будет позиционироваться на о новых размерах экрана, как это:

if enterButtonTapped == true && self.budgetEntryView.center.y != 784 && self.budgetEntryView.center.y != 868 && self.budgetEntryView.center.y != 740 && self.budgetEntryView.center.y != 833.5 {