1

我被这个吓傻了。

我在屏幕上有一个大按钮,当我按下它时,我希望它缩小并移动到屏幕的左下角(完成后,隐藏自身并在结束位置取消隐藏具有不同功能的相同按钮)。

我有一个标签可以扩展和收缩,UIView animateWithDuration:animations:completion:并且使用相同的方法可以正常工作,所以我很困惑为什么这不起作用:

[UIView animateWithDuration:2.0
                 animations:^{
                      self.bigButton.frame = self.littleButton.frame;
                 }
                 completion:^(BOOL finished){
                     self.bigButton.hidden = YES;
                     self.littleButton.hidden = NO;
                 }];

执行此操作时,大按钮出现在屏幕底部(部分离开屏幕)并动画到其原始位置,然后执行完成块。

考虑将一个框架分配给另一个框架会导致问题,我在一个独立的应用程序中重新创建了它,并使用CGRectMake并手动填充了这些值。同样的事情发生了。

我的问题:

  • 为什么这会在底角启动我的按钮并动画到其原始位置?
  • 如何使 bigButton(位置中心,大尺寸)显示为 littleButton(位置左下角,小尺寸)的动画?
4

2 回答 2

3

使用动画的中心和边界而不是帧。来自动画框架属性的文档:

“可以对此属性的更改进行动画处理。但是,如果 transform 属性包含非身份变换,则 frame 属性的值是未定义的,不应修改。在这种情况下,您可以使用 center 属性重新定位视图并改为使用 bounds 属性调整大小。”

于 2013-06-28T23:26:41.003 回答
0

我现在不在我的 Macbook 上,但我认为这可能是你想要让它移动的东西

 [UIView animateWithDuration:2.0
                                    options: UIViewAnimationCurveLinear
                                 animations:^{
                                     self.bigButton.center = CGMakePoint(XCOORD, YCOORD);
                                     self.bigButton.frame = CGRectMake(STARTX,STARTY,WIDTH,HEIGHT)
                                 }
                                 completion:^(BOOL finished){
                                     self.bigButton.hidden = YES;
                                     self.littleButton.hidden = NO;
                                 }];

它将移动到点 XCOORD, YCOORD 并且按钮的大小将从左下角开始 (STARTX, STARTY) 并且将是 LENGTH 宽和 HEIGHT 高。再次我无法检查这些,因为我不在我的电脑上,但我认为这是你想要去的方向。当我回到家时,我会再看看这个。

我还认为您可以使用 CGRectMake 来移动按钮并更改大小。

于 2013-06-28T21:25:51.383 回答