0

我有一个 UIButton,当它被按下时,一个 UIView 从按钮向下展开。视图首先设置为:

CGRectMake(0, (button.frame.orgin.y+button.frame.size.hight), self.view.frame.size.width, 0);

然后当按下按钮时,高度会扩大:

CGRectMake(0, (button.frame.orgin.y+button.frame.size.hight), self.view.frame.size.width, 200);

当视图展开并再次按下按钮时,视图再次折叠到 0 的高度。我使用[UIView beginAnimation:nil context:NULL]...;Not 使用指定的 animationTransition 或曲线对这一切进行了动画处理。

我的问题是动画不是我想要的。它就像在动画期间变得越来越小,这确实有意义,因为高度发生了变化。

我的问题是如何更改动画并使视图看起来像是在按钮后面向上移动,而不会被推到一起。——这当它被第二次按下时就崩溃了。

如果问题不清楚,请询问谢谢!

4

1 回答 1

0

我认为您想要的是为y帧的原点设置动画并在动画前后保持高度相同。只需将您的第一个代码(动画之前的代码)更改为:

CGRectMake(0, button.frame.origin.y, self.view.frame.size.width, 200);

或者,如果您想使用 CGRect 方法:

CGRectMake(0, CGRectGetMinY(button.frame), CGRectGetWidth(self.view.frame), 200);

看看这是否会给你你想要的结果。

使用基于块的 animateWithDuration 方法也很好:

[UIView animateWithDuration:duration animations:^{
    CGRectMake(0, CGRectGetMaxY(button.frame), CGRectGetWidth(self.view.frame), 200);
}];
于 2013-05-19T11:45:23.320 回答