2014-11-21 3 views
0

Я просто пытаюсь переместить два вида вверх самым простым способом, и я не могу понять, как заставить его работать на iOS8 (но его работы отлично работают на iOS7).Проблемы с анимацией с IOS 8.1

Я прочитал, что изменения произошли, но я не могу заставить его работать так или иначе ...

Вот код, я использую:

CGRect txFrame; // начальный кадр моего текстового поля CGRect btFrame; // начального кадр моей кнопки

- (void)kbWillShow{ 

    [UIView animateWithDuration:0.45 animations:^{ 
      //Remembering the initial frames here 
      txFrame = _txReason.frame; 
      btFrame = _btSend.frame; 
      _lbTitleReason.alpha = 0.3; 
      //Animating 
      _txReason.frame = CGRectMake(txFrame.origin.x, txFrame.origin.y-55, txFrame.size.width, txFrame.size.height); 
      _btSend.frame = CGRectMake(btFrame.origin.x, btFrame.origin.y-75, btFrame.size.width, btFrame.size.height); 

     }completion:nil]; 

    } 

    - (void)kbWillHide{ 
    [UIView animateWithDuration:0.45 animations:^{ 
      //Putting them back to their original positions. 
      _txReason.frame = txFrame; 
      _btSend.frame = btFrame; 
      _lbTitleReason.alpha = 1; 
     }completion:nil]; 

    } 

Я пытался поставить позицию «результата» в блоке завершения, но я просто делаю очень резкое и странное движение, и после Duraton мнения, телепорты к intented должность. (Это лучше, чем совершать резкое движение и заканчиваться в том же положении, на котором он начинался).

Это должно быть просто, что я делаю неправильно?

+0

вы должны играть с свойством 'center', а не' frame' в вашем случае. – holex

+0

Я думаю, что я уже пытался, но, возможно, не правильно, не могли бы вы привести мне пример? – Smiless

+0

пример ...? вы должны сделать то же самое, но с использованием свойства 'center', а не' frame'. Я не уверен, какой пример вам бы хотелось увидеть. для написания этого комментария требуется больше времени, чем вместо фактического кода для использования свойства 'center'. :) – holex

ответ

0

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

E.g. чтобы изменить ширину вида с шириной NSLayoutConstraint, вы должны позвонить по номеру constraint.constant = newWidth;, затем перейдите к вашему коду анимации. Вот как я это делаю, и все работает отлично.

EDIT: ваш код анимации в порядке. Вам не нужно играть с centre.

+0

Я попробую это прямо сейчас, и я вернусь – Smiless