Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何设置按钮的动画以缩小并移动到其他位置?_Ios_Objective C_Uiviewanimation_Uiviewanimationtransition - Fatal编程技术网

Ios 如何设置按钮的动画以缩小并移动到其他位置?

Ios 如何设置按钮的动画以缩小并移动到其他位置?,ios,objective-c,uiviewanimation,uiviewanimationtransition,Ios,Objective C,Uiviewanimation,Uiviewanimationtransition,这件事让我目瞪口呆 我在屏幕上有一个大按钮,当我按下它时,我希望它缩小并移动到屏幕的左下角(完成后,隐藏自己并在结束位置取消隐藏一个具有不同功能的相同按钮) 我有一个标签,可以在与UIView animateWithDuration:animations:completion:接触时展开和收缩,并且使用相同的方法效果很好,所以我不明白为什么这不起作用: [UIView animateWithDuration:2.0 animations:^{

这件事让我目瞪口呆

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

我有一个标签,可以在与
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
手动填充值。同样的事情发生了

我的问题是:

  • 为什么要从下角的“我的按钮”开始,并设置动画到其原始位置
  • 如何使大按钮(位置居中,大尺寸)显示为小按钮(位置左下角,小尺寸)

我现在不在我的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)的左下角开始,长度宽,高度高。再说一遍,我不能检查这些,因为我不在电脑前,但我认为这是你试图去的方向。我回家后会再看看这个


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

使用动画的中心和边界,而不是帧。 从用于设置帧属性动画的文档中:


对此属性的更改可以设置动画。但是,如果transform属性包含非标识转换,则frame属性的值未定义,不应修改。在这种情况下,您可以使用center属性重新定位视图,而使用bounds属性调整大小

视图层次结构中的大按钮和小按钮是否处于同一级别(即,它们是否都具有相同的父视图)?@bobnoble是的,相同的父视图。UIButton是否不应设置动画或其他内容?我将动画代码插入到一个测试项目中,并按照您的描述工作,所以问题不在于你提供的代码。正如你在第二段中所描述的(即,期望的行为),也就是说。做与我的代码相同的事情。奇怪的是,当我切换动画块中声明的顺序时,按钮会跳到任意位置,然后设置动画到正确的位置。大小仍然不变。可以找到框架属性的完整解释。