如何创建一个循环来在每次按下按钮时指定不同的动作?

约翰·比格斯

我的视图控制器中有一个名为“ 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

非常感谢您的帮助,如果您需要其他任何信息,请告诉我,以便您可以提供帮助:)

谢尔盖·卡里尼琴科(Sergey Kalinichenko)

添加一个整数计数器变量,并在每次按下按钮时将其递增。向其添加代码以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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何获得一个UI按钮,使其在每次按下时执行不同的任务?

jQuery-如何在每次按下按钮时创建一个新的可拖动div

如何创建一个SwiftUI按钮来改变不透明度并在触摸时触发按钮动作?

如何创建一个回复按钮,每次单击一个按钮时显示

每次按下按钮都会创建一个新标签

按下按钮时,如何模拟按下的另一个按钮?

尝试添加一个按钮,该按钮在每次按下导航栏时都会更改背景颜色

每次按下Enter键时如何在Java中弹出一个新文本?

如何使动作按钮仅在每次按下时才起作用?

swtableviewcell如何创建一个实用程序按钮,当我按下它时可以更改状态

按下按钮时如何锁定动作?

每次单击按钮时创建一个新表单

快速按下按钮时在下一个视图中显示不同的图像?

Swift-每次按下保存按钮时如何将下一个索引添加到arraylist

每次在Tkinter中如何访问一个不同的按钮?

每次单击按钮时如何创建一个新的div?

每次用户点击下载按钮时如何创建一个新线程

当我按下另一个按钮时,如何显示按下按钮的视觉效果?

当一个阶段在javafx中启动而没有按下按钮时,我如何自动创建一个运行方法?

如何在每次单击按钮时一个一个地创建文本字段?

如何创建一个.bat循环来创建一个新的cmd窗口并运行一个不同的循环/函数?

Java / Android-如何通过按下另一个按钮来更改切换按钮的状态?

每次使用android studio按下按钮时,如何让1个按钮播放随机声音

如何使其无法到达数组中的最后一个元素时按下按钮

在当前模态上按下按钮时,如何触发另一个模态?

按下按钮时如何转到另一个视图?

每当我按下按钮时,如何制作一个刷新的面板?

按下后退按钮时如何显示第一个片段?

在 Python 中按下按钮(tkinter)时如何执行另一个文件?