我有两个UIButtons,我想在数字1 UIButton
首先单击,然后在2号UIButton
。点击第二个UIButton
后,我想让两个UIButton
自动旋转。我用CABasicAnimation
来旋转它们。这两个UIButton
的操作与buttonClicked
的操作相同。这两个按钮使用不同的CABasicAnimation
方法。如何在不点击按钮的情况下开始操作?
我已经创建了一个新的方法来旋转它,但是当我从button clicked
动作(对于两个按钮相同)调用它时,只有第一个被旋转。为了调用旋转方法,我使用[self rotateButtons];
问题是,如果我插入新的UIButton
并给IBAction
新按钮就没有问题。但我不想在图层中添加一个新按钮。
我如何修复rotateButtons
以便两个按钮可以同时旋转?
下面是代码:
- (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];
}
`
你可能想在你的问题一些代码来显示到目前为止,你已经尝试过什么,也许有些图像以图形方式描述你”试图做? –
@MichaelDautermann我上传程序的代码。 action buttonClicked用于两个UIButton。我想,当点击第二个UIButton时,buttonRefresh动作开始并旋转两个按钮。 – user1114232
由于rotateView1和rotateView2是相同的,那将是更容易地创建一个新的' - (空)rotateViewWithTag:(NSInteger的)标签{'方法.... – lnafziger