1

我有一个按钮(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));
                         }];
    }

}

4

2 回答 2

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
}];


}


希望这可以帮助你:)

于 2013-09-05T04:42:19.427 回答
0

如果您想将按钮旋转回来 - 您需要提供负数作为 CGAffineTransformMakeRotation() 的值。

以下是 Apple Docs 的片段:

CGAffineTransformMakeRotation()

返回从您提供的旋转值构造的仿射变换矩阵。

CGAffineTransform CGAffineTransformMakeRotation ( CGFloat angle );

该矩阵旋转坐标系轴的角度(以弧度为单位)。在 iOS 中,正值指定逆时针旋转,负值指定顺时针旋转。在 OS X 中,正值指定顺时针旋转,负值指定逆时针旋转。

希望这可以帮助!

于 2013-09-04T17:19:03.450 回答