Ios 如何在不点击按钮的情况下启动操作?

Ios 如何在不点击按钮的情况下启动操作?,ios,ios5,uikit,core-animation,Ios,Ios5,Uikit,Core Animation,我有两个UIButton,我想先单击数字1UIButton,然后单击数字2UIButton。单击第二个ui按钮后,我希望两个ui按钮自动旋转。我使用cabasicanition旋转它们。两个ui按钮具有相同的按钮点击操作。这两个按钮使用不同的CABasicAnimation方法 我创建了一个新方法来旋转它,但是当我从点击的按钮调用它时(两个按钮相同),只有第一个按钮被旋转。为了调用rotate方法,我使用了[自旋转按钮] 问题是,如果我插入一个新的ui按钮,并给新按钮一个I操作,就可以了。但我不

我有两个UIButton,我想先单击数字1
UIButton
,然后单击数字2
UIButton
。单击第二个
ui按钮后,我希望两个
ui按钮自动旋转。我使用
cabasicanition
旋转它们。两个
ui按钮
具有相同的
按钮点击
操作。这两个按钮使用不同的
CABasicAnimation
方法

我创建了一个新方法来旋转它,但是当我从点击的
按钮调用它时(两个按钮相同),只有第一个按钮被旋转。为了调用rotate方法,我使用了
[自旋转按钮]

问题是,如果我插入一个新的
ui按钮
,并给新按钮一个
I操作
,就可以了。但我不希望层中有新按钮

如何修复旋转按钮
,使两个按钮同时旋转

代码如下:

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
{
    if ([value isEqualToString:@"SecondImage"])
    {
        UIImageView *myView2=(UIImageView *)[self.view viewWithTag:numberOfCurrentButton+100];
        [myView2 setHidden:FALSE];
        UIImageView *myView=(UIImageView *)[self.view viewWithTag:numberOfCurrentButton];
        [myView setHidden:TRUE];
        CALayer *layer2 =  myView2.layer;
        layer2.anchorPoint = CGPointMake(0.5f, 0.5f);
        CABasicAnimation *animateImage2 = [CABasicAnimation animationWithKeyPath: @"transform"];
        CATransform3D transform2 = CATransform3DIdentity;
        transform2.m34 = 1.0/-900.0; 
        self.view.layer.transform = transform2;
        layer2.transform = CATransform3DMakeRotation(-M_PI/2, 0.0f, 1.0f, 0.0f);
        self.view.layer.transform = transform2;
        transform2 = CATransform3DRotate(transform2,  -M_PI, 0.0f, 1.0f, 0.0f);
        animateImage2.repeatCount = 1.0;
        animateImage2.toValue = [NSValue valueWithCATransform3D: transform2];
        animateImage2.duration = 0.5;
        animateImage2.fillMode = kCAFillModeForwards;
        animateImage2.removedOnCompletion = NO;
        [layer2 addAnimation: animateImage2 forKey: @"halfAnimatedImage"];

        return;
    }
}

-(void) rotateView1
{
    UIImageView *firstImage=(UIImageView *)[self.view viewWithTag:numberOfCurrentButton];
    CALayer *layer =  firstImage.layer;
    layer.anchorPoint = CGPointMake(0.5f, 0.5f);
    CABasicAnimation *animateImage = [CABasicAnimation animationWithKeyPath: @"transform"];
    CATransform3D transform = CATransform3DIdentity;
    transform.m34 = 1.0/-900.0; 
    self.view.layer.transform = transform;
    layer.transform = CATransform3DMakeRotation(M_PI, 0.0f, 1.0f, 0.0f);
    [animateImage setDelegate:self ];
    animateImage.repeatCount = 0.5;
    animateImage.toValue = [NSValue valueWithCATransform3D: transform];
    animateImage.duration = 0.5;
    animateImage.fillMode = kCAFillModeForwards;
    animateImage.removedOnCompletion = NO;
    animateImage.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
    [animateImage setValue:@"SecondImage" forKey:@"halfAnimatedImage"];
    [layer addAnimation: animateImage forKey: @"halfAnimatedImage"];
}
-(void) rotateView2
{
    UIImageView *firstImage=(UIImageView *)[self.view viewWithTag:numberOfCurrentButton];
    CALayer *layer =  firstImage.layer;
    layer.anchorPoint = CGPointMake(0.5f, 0.5f);
    CABasicAnimation *animateImage = [CABasicAnimation animationWithKeyPath: @"transform"];
    CATransform3D transform = CATransform3DIdentity;
    transform.m34 = 1.0/-900.0; 
    self.view.layer.transform = transform;
    layer.transform = CATransform3DMakeRotation(M_PI, 0.0f, 1.0f, 0.0f);
    [animateImage setDelegate:self ];
    animateImage.repeatCount = 0.5;
    animateImage.toValue = [NSValue valueWithCATransform3D: transform];
    animateImage.duration = 0.5;
    animateImage.fillMode = kCAFillModeForwards;
    animateImage.removedOnCompletion = NO;
    animateImage.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
    [animateImage setValue:@"SecondImage" forKey:@"halfAnimatedImage"];
    [layer addAnimation: animateImage forKey: @"halfAnimatedImage"];
}
-(IBAction) buttonRefresh:(UIButton *)sender
{
    numberOfCurrentButton=1; 
    [self rotateView1];
    numberOfCurrentButton=2;
    [self rotateView2];
}
-(IBAction)buttonClicked:(UIButton *)sender
{
    [self buttonRefresh:sender];

}

`

根据我的理解,您的按钮单击操作将接收发送者(单击的UIButton),您将旋转该发送者

要旋转两个,可以执行以下任一操作:

  • 为这两个按钮创建一个IBOutlet(不是IBAction)。在rotateButtons方法中,不只是旋转按钮,而是旋转这两个按钮
  • 按照上面@lnafziger的建议,在XIB中用数字标记两个按钮。在rotateButtons方法中,旋转这两个按钮。您可以使用以下代码获取每个UIButton:

    UIbutton *button1 = (UIButton *)[self.view viewWithTag:101];
    

  • 根据我的理解,您的buttonClicked操作将接收发送者(单击的UIButton),您将旋转相同的按钮

    要旋转两个,可以执行以下任一操作:

  • 为这两个按钮创建一个IBOutlet(不是IBAction)。在rotateButtons方法中,不只是旋转按钮,而是旋转这两个按钮
  • 按照上面@lnafziger的建议,在XIB中用数字标记两个按钮。在rotateButtons方法中,旋转这两个按钮。您可以使用以下代码获取每个UIButton:

    UIbutton *button1 = (UIButton *)[self.view viewWithTag:101];
    

  • 您可能希望在问题中包含一些代码,以显示您迄今为止所做的尝试,也可能包含一些图像,以图形方式描述您正在尝试执行的操作?@MichaelDautermann I上载程序的代码。单击的操作按钮用于两个UIButton。我想,当点击第二个UIButton时,buttonRefresh操作启动并旋转这两个按钮。由于rotateView1和rotateView2是相同的,因此创建一个新的
    -(void)rotateViewWithTag:(NSInteger)标记会更容易{
    method.…您可能希望在问题中包含一些代码,以显示您迄今为止所做的尝试,或者包含一些图像,以图形方式描述您正在尝试执行的操作?@MichaelDautermann我上载了程序的代码。单击的操作按钮用于两个UIButton。我希望在单击第二个UIButton时,按钮刷新ac启动并旋转两个按钮。由于rotateView1和rotateView2是相同的,因此创建一个新的
    -(void)rotateViewWithTag:(NSInteger)tag{
    方法会更容易…您理解我的问题,我认为您的建议(第一)使用IBOutlet似乎是最好的。我会尝试,我会告诉你。你理解我的问题,我认为你对IBOutlet的建议(第一)似乎是最好的。我会尝试,我会告诉你。