我的视图控制器中有一个名为“ getQuoteButton”的方法,该方法是附加到按钮上的IBAction方法,每次我点击按钮时,都会得到一个随机引用。
我每次提出新报价时都会创建一个特定的推送动画,并且我还想创建一个循环,每次我点击按钮时都可以更改动画,但我不知道如何。
这是我的代码(NOViewController),它是一个单视图应用程序:
#import "NOViewController.h"
#include "NOQuotes.h"
@interface NOViewController ()
@end
@implementation NOViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.quotes = [[NOQuotes alloc] init];
UIImage *background = [UIImage imageNamed:@"albert"];
[self.backgroundImageView setImage:background];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
- (IBAction)getQuoteButton
{
self.quotesLabel.text = [self.quotes getRandomQuote];
CATransition *animationTran = [CATransition animation];
[animationTran setType:kCATransitionPush];
[animationTran setDuration:0.7f];
[animationTran setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[self.quotesLabel.layer addAnimation:animationTran forKey:@"pushAnimation"];
}
@end
非常感谢您的帮助,如果您需要其他任何信息,请告诉我,以便您可以提供帮助:)
添加一个整数计数器变量,并在每次按下按钮时将其递增。向其添加代码以getQuoteButton
检查计数器,并相应地设置动画类型和子类型:
@interface NOViewController () {
int numClicks; // <<=== Added
}
@end
- (void)viewDidLoad
{
[super viewDidLoad];
self.quotes = [[NOQuotes alloc] init];
UIImage *background = [UIImage imageNamed:@"albert"];
[self.backgroundImageView setImage:background];
numClicks = 0; // <<=== Added
}
- (IBAction)getQuoteButton
{
self.quotesLabel.text = [self.quotes getRandomQuote];
CATransition *animationTran = [CATransition animation];
switch (numClicks) { // <<=== Added
case 0:
[animationTran setType:kCATransitionPush];
[animationTran setSubtype:kCATransitionFromRight];
break;
case 1:
[animationTran setType:kCATransitionPush];
[animationTran setSubtype:kCATransitionFromLeft];
break;
case 2:
[animationTran setType:kCATransitionPush];
[animationTran setSubtype:kCATransitionFromTop];
break;
... // And so on;
case 13:
[animationTran setType:kCATransitionFade];
// Fade has no subtype
break;
}
numClicks = (numClick+1) % 13; // <<=== Added
[animationTran setDuration:0.7f];
[animationTran setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
[self.quotesLabel.layer addAnimation:animationTran forKey:@"pushAnimation"];
}
您可以通过创建两个数组或一个类型/子类型对数组来缩短此代码,但是要实现此目的,需要在点击时增加成员变量的想法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句