我有一些动画代码可以将9个可用按钮移动到屏幕中央:
[UIView animateWithDuration:4
delay:0
options:UIViewAnimationOptionCurveEaseIn
animations:^(void)
{
switch (correctNum) {
case 1:
[number1 setFrame:CGRectMake(482, 354, 60, 60)];
break;
case 2:
[number2 setFrame:CGRectMake(482, 354, 60, 60)];
break;
case 3:
[number3 setFrame:CGRectMake(482, 354, 60, 60)];
break;
case 4:
[number4 setFrame:CGRectMake(482, 354, 60, 60)];
break;
case 5:
[number5 setFrame:CGRectMake(482, 354, 60, 60)];
break;
case 6:
[number6 setFrame:CGRectMake(482, 354, 60, 60)];
break;
case 7:
[number7 setFrame:CGRectMake(482, 354, 60, 60)];
break;
case 8:
[number8 setFrame:CGRectMake(482, 354, 60, 60)];
break;
case 9:
[number9 setFrame:CGRectMake(482, 354, 60, 60)];
break;
default:
break;
}
}
completion:^(BOOL finished)
{
}];
工作正常,正确的按钮可以平滑地移动到屏幕中央。但我想这样做,以便按钮增长到中心的两倍大小,所以我将代码更改为:
[UIView animateWithDuration:4
delay:0
options:UIViewAnimationOptionCurveEaseIn
animations:^(void)
{
switch (correctNum) {
case 1:
[number1 setFrame:CGRectMake(482, 354, 120, 120)];
break;
case 2:
[number2 setFrame:CGRectMake(482, 354, 120, 120)];
break;
case 3:
[number3 setFrame:CGRectMake(482, 354, 120, 120)];
break;
case 4:
[number4 setFrame:CGRectMake(482, 354, 120, 120)];
break;
case 5:
[number5 setFrame:CGRectMake(482, 354, 120, 120)];
break;
case 6:
[number6 setFrame:CGRectMake(482, 354, 120, 120)];
break;
case 7:
[number7 setFrame:CGRectMake(482, 354, 120, 120)];
break;
case 8:
[number8 setFrame:CGRectMake(482, 354, 120, 120)];
break;
case 9:
[number9 setFrame:CGRectMake(482, 354, 120, 120)];
break;
default:
break;
}
}
completion:^(BOOL finished)
{
}];
现在,当代码触发时,按下的按钮跳转到屏幕中心(没有平滑的动画)然后平滑地移回到原始位置 - 实际上与上面的代码相反。该按钮也不会改变大小。
知道为什么会这样做吗?或者失败了,建议如何让它做我想做的事情?
答案 0 :(得分:0)
不要改变框架的宽度和高度,而是保留第一个示例并更改按钮的变换:
numberX.transform = CGAffineTransformMakeScale(2,2);
我无法解释为什么你的第二个例子不能正常工作,但是如果第一个例子用于将按钮移动到屏幕的中心,那么保留它并使用按钮的transform属性来放大它。
答案 1 :(得分:0)
首先,您使用的是自动布局吗?如果是,则此代码将无法正常运行。使用AutoLayout,您需要更改约束而不是尝试移动视图。
现在,关于你的代码:
我建议您更改视图的中心属性而不是帧原点。即使已应用变换,移动中心仍然有效。
然后,要更改大小,请更改边界大小(将使按钮以较大的大小重新绘制自身)。您可以像其他人建议的那样更改按钮的变换,但这会缩放像素而不是重新绘制,因此它看起来会变得模糊(或模糊,取决于)。如果你改变边界应该看起来更好。