我有一个按钮(openMenu),我正在向下设置动画(正常工作)并使用“抽屉”旋转(第一次工作)。它第一次旋转它的工作..但是当我再次尝试旋转时,它会退出并隐藏图像并显示按钮标题?任何想法为什么?我需要它再向后旋转45度。不知道为什么会这样做。
另外 - 请参阅下面的GIF图片,以便了解正在发生的事情。
- (void)viewDidLoad
{
[super viewDidLoad];
draw1 = 0;
scrollView.frame = CGRectMake(0, -200, 768, 200);
[scrollView setContentSize:CGSizeMake(768, 200)];
openMenu.frame = CGRectMake(680, 100, 55, 55);
}
- (IBAction)openMenu:(id)sender {
if (draw1 == 0) {
draw1 = 1;
CGRect optionsDrawer = scrollView.frame;
CGRect optionsButton = openMenu.frame;
optionsDrawer.origin.y += 200;
optionsButton.origin.y += 200;
[UIView animateWithDuration:0.5
animations:^{
scrollView.frame = optionsDrawer;
openMenu.frame = optionsButton;
openMenu.transform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(45));
}];
} else {
draw1 = 0;
CGRect optionsDrawer = scrollView.frame;
CGRect optionsButton = openMenu.frame;
optionsDrawer.origin.y -= 200;
optionsButton.origin.y -= 200;
[UIView animateWithDuration:0.5
animations:^{
scrollView.frame = optionsDrawer;
openMenu.frame = optionsButton;
openMenu.transform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(45));
}];
}
}
答案 0 :(得分:3)
这样做,我使用图层来制作动画,很容易,一旦你旋转,不需要再次旋转,只需恢复到原始状态。我这样做对我有用,试试吧。 因为我正在使用图层添加“QuartzCore”库并导入此
#import<QuartzCore/QuartzCore.h> //include this
if (draw1 == 0)
{
....//your code
[UIView animateWithDuration:0.1 animations:^{
detailButton.layer.transform = CATransform3DMakeRotation((180) * 45, 0, 0, 1);
}];
}
else
{
....//your code
[UIView animateWithDuration:0.1 animations:^{
detailButton.transform = CGAffineTransformIdentity; //brings back to original position by animating
}];
}
希望这有助于你:)
答案 1 :(得分:0)
如果要将按钮旋转回来 - 您需要提供负数作为CGAffineTransformMakeRotation()的值。
以下是Apple Docs的摘录:
CGAffineTransformMakeRotation()
返回由旋转构造的仿射变换矩阵 你提供的价值。
CGAffineTransform CGAffineTransformMakeRotation(CGFloat angle);
此矩阵旋转的角度(以弧度表示) 坐标系轴。在iOS中,正值指定 逆时针旋转,负值指定顺时针 回转。在OS X中,正值指定顺时针旋转和a 负值指定逆时针旋转。
希望这有帮助!