Ios 两个站点的objective-c卡翻转设置图像
我正在尝试创建一个flashcard应用程序,我尝试了这段代码,但它只显示第一张图像 有人能帮我吗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:@
@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];
}];
}
}