2014-11-21 46 views
0

我只是试图以最简单的方式向上移动两个视图,我无法弄清楚如何使它在iOS8上工作(但它的工作在iOS7上很好)。IOS 8.1的动画问题

我读过的变化发生,但我不能让反正它的工作...

这里是我使用的代码:

的CGRect txFrame; //我的textview的初始框架 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 2014-11-21 15:41:39

+0

我想我已经尝试过,但也许不正确,你能给我一个例子吗? – Smiless 2014-11-21 15:44:03

+0

例子...?你应该做同样的事情,但是用'center'属性而不是'frame'。我不确定你想看哪个例子。编写此注释需要更多时间,而不是改变使用'center'属性的实际代码。 :) – holex 2014-11-21 15:46:55

回答

0

我遇到过这个问题,答案是要处理布局约束。您需要更改影响要更改的视图的布局约束的常量属性。

E.g.要更改宽度为NSLayoutConstraint的视图的宽度,您可以调用constraint.constant = newWidth;,然后继续执行动画代码。这是我如何做的,它工作正常。

编辑:你的动画代码很好。你不需要玩centre属性。

+0

我现在就试试这个,我回来了 – Smiless 2014-11-24 09:53:59