Ios 两个站点的objective-c卡翻转设置图像

Ios 两个站点的objective-c卡翻转设置图像,ios,objective-c,Ios,Objective C,我正在尝试创建一个flashcard应用程序,我尝试了这段代码,但它只显示第一张图像 有人能帮我吗 @implementation CardsViewController - (IBAction)Flip:(UIButton*)sender { if ([sender.currentImage isEqual:[UIImage imageNamed:@"a"]]) { [sender setBackgroundImage:[UIImage imageNamed:@

我正在尝试创建一个flashcard应用程序,我尝试了这段代码,但它只显示第一张图像

有人能帮我吗

@implementation CardsViewController
- (IBAction)Flip:(UIButton*)sender
{
    if ([sender.currentImage isEqual:[UIImage imageNamed:@"a"]])
    {
        [sender setBackgroundImage:[UIImage imageNamed:@"b"]
                                  forState:UIControlStateNormal];
    }
    else
    {
        [sender setBackgroundImage:
                 [UIImage imageNamed:@"a"] forState:UIControlStateNormal];

    }

}

您正在设置背景图像,但使用“当前图像”,即前景图像作为比较

尝试替换:

if ([sender.currentImage isEqual:[UIImage imageNamed:@"a"]])


我认为您应该创建一个包含两个子视图的视图,然后只转换它们,[UIView transitionFromView:toView:duration:options:completion:

代码片段:


不使用背景图像,实现翻转效果的一种方法是使用UIButton状态,并将其中一个图像设置为“正常”状态的默认图像,将另一个图像设置为“选定”状态的默认图像;您甚至可以在设计时设置这些图像,然后仅通过方法Flip更改按钮的状态,该方法将自动更改显示给用户的图像

请注意,对于每个按钮状态,您可以设置两个图像,一个默认图像和一个背景图像。您甚至不需要/不必设置背景图像,也不必在每次选择按钮时不断更改背景图像

@implementation CardsViewController
- (IBAction)Flip:(UIButton*)sender
{
    if ([sender isSelected])
    {
        [sender setSelected:NO];
    }
    else
    {
        [sender setSelected:YES];
    }

}
如果希望或需要通过代码设置图像,请在仅激发一次的方法(通常为ViewDidLoad)中添加以下行:

[yourButtonInstance setImage:[UIImage imageNamed:@"a"] forState:UIControlStateNormal];
[yourButtonInstance setImage:[UIImage imageNamed:@"b"] forState:UIControlStateSelected];

倾听是最简单的方式

希望这对你有帮助

 @interface ViewController ()
 {
    BOOL ButtonClicked;//to trake change images ..
 }

 @end

 @implementation ViewController

 - (void)viewDidLoad
  {

    [super viewDidLoad];
     ButtonClicked = NO;
// Do any additional setup after loading the view, typically from a nib.

    [self.button setImage:[UIImage imageNamed:@"a.png"] forState:UIControlStateNormal];            //change the type of button to custom in the xib
 }

 - (IBAction)whenClicked:(id)sender
 {
     if(ButtonClicked)
     {
        ButtonClicked = NO;
        [UIView animateWithDuration:0.8 animations:^{
        [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.button cache:YES];
        [self.button setImage:[UIImage imageNamed:@"a.png"] forState:UIControlStateNormal];
         }];



    }
    else
    {
        ButtonClicked = YES;

        [UIView animateWithDuration:0.8 animations:^{
        [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.button cache:YES];
        [self.button setImage:[UIImage imageNamed:@"b.png"] forState:UIControlStateNormal];
       }];
    }

 }

这似乎是比较图像的一种非常低效且可能很麻烦的方法。只需设置一个布尔状态标志并检查它。我尝试使用单按钮:)@user3344744只需将您的子视图添加到单按钮:Dlooks some complex:)我是一个初学者,我们不能简化它吗?有几件事——(1)您确定所有内容都正确连接并且正在调用iAction吗?(2) 当您编写名为“a”和“b”的图像时,实际上是在代码中使用一种文件类型来跟踪它,对吗?例如“a.png”。和(3)你确定你最初设置的是背景图像而不是前景图像吗?看起来这样肯定行,我会让你知道的。谢谢你,珊珊。
[yourButtonInstance setImage:[UIImage imageNamed:@"a"] forState:UIControlStateNormal];
[yourButtonInstance setImage:[UIImage imageNamed:@"b"] forState:UIControlStateSelected];
 @interface ViewController ()
 {
    BOOL ButtonClicked;//to trake change images ..
 }

 @end

 @implementation ViewController

 - (void)viewDidLoad
  {

    [super viewDidLoad];
     ButtonClicked = NO;
// Do any additional setup after loading the view, typically from a nib.

    [self.button setImage:[UIImage imageNamed:@"a.png"] forState:UIControlStateNormal];            //change the type of button to custom in the xib
 }

 - (IBAction)whenClicked:(id)sender
 {
     if(ButtonClicked)
     {
        ButtonClicked = NO;
        [UIView animateWithDuration:0.8 animations:^{
        [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.button cache:YES];
        [self.button setImage:[UIImage imageNamed:@"a.png"] forState:UIControlStateNormal];
         }];



    }
    else
    {
        ButtonClicked = YES;

        [UIView animateWithDuration:0.8 animations:^{
        [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.button cache:YES];
        [self.button setImage:[UIImage imageNamed:@"b.png"] forState:UIControlStateNormal];
       }];
    }

 }