【发布时间】:2014-11-22 03:09:34
【问题描述】:
我只是想以最简单的方式向上移动两个视图,但我不知道如何让它在 iOS8 上工作(但它在 iOS7 上工作得很好)。
我已经读到发生了变化,但无论如何我都无法让它工作......
这是我正在使用的代码:
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];
}
我尝试将“结果”位置放在完成块中,但我只是做了一个非常突然和奇怪的动作,在持续时间之后,视图传送到预期位置。 (这比做一个突然的运动并最终在与它开始时完全相同的位置更好)。
这应该很简单,我做错了什么?
【问题讨论】:
-
您应该使用
center属性而不是frame。 -
我想我已经尝试过了,但可能不太正确,你能给我举个例子吗?
-
示例...?你应该做同样的事情,但使用
center属性而不是frame。我不确定你真的想看哪个例子。与更改实际代码以使用center属性相比,编写此注释需要更多时间。 :) -
我看不出使用 center 属性会如何解决这个问题。这些动画是什么时候调用的,你是否启用了 AutoLayout?
标签: ios objective-c ios8 uiviewanimation