2014-02-24 21 views
1

我試圖創建一個flashcard應用程序,我試過這個代碼,但它只顯示第一個圖像。objective-c卡翻轉設置圖像爲這兩個網站

任何人都可以幫助我嗎?

@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]; 

    } 

} 
+1

看起來像一個非常低效和可能比較麻煩的方式來比較圖像。只需設置一個布爾狀態標誌並檢查。 –

回答

0

聽到的是簡單的方式

希望這可以幫助你..

@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]; 
     }]; 
    } 

} 
+0

看起來這將是肯定的工作,我就會讓你知道。非常感謝Shan。 – user3344744

+0

歡迎您... :) –

1

您正在設置背景圖像,但使用「currentImage」,即前景圖像作爲比較。

嘗試更換:

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

if ([sender.currentBackgroundImage isEqual:[UIImage imageNamed:@"a"]]) 
+0

這並沒有幫助:(它繼續顯示圖像「一」 – user3344744

+0

有兩件事情 - (1)確定一切都正確掛接和IBAction爲的被稱爲(2)當你寫imageNamed「一」?和「b」,實際上是採取後續行動,在你的代碼的文件類型,對嗎?比如「a.png」。(3)你確定你原來已經設置背景圖片,而不是前景圖像? –

+0

呀那些迷上了正確 – user3344744

0

我想你應該創建一個視圖包含兩個子視圖,然後就進行轉換,[UIView的transitionFromView:toView:持續時間:選擇:完成:]

代碼片段:

UIButton *containerView = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
containerView.frame = CGRectMake(100.0, 100.0, 120.0, 120.0); 
[containerView addTarget:self action:@selector(transition:) forControlEvents:UIControlEventTouchUpInside]; 

UIImageView *imageView1 = [[UIImageView alloc] initWithFrame:containerView.bounds]; 
UIImageView *imageView2 = [[UIImageView alloc] initWithFrame:containerView.bounds]; 
imageView1.image = [UIImage imageNamed:@"Sample1"]; 
imageView2.image = [UIImage imageNamed:@"Sample2"]; 
imageView1.tag = 1; 
imageView2.tag = 2; 

[containerView addSubview:imageView1]; 
[containerView addSubview:imageView2]; 

[self.view addSubview:containerView]; 

- (void)transition:(UIButton *)sender { 
    UIImageView *imageView1 = (UIImageView *)[sender viewWithTag:1]; 
    UIImageView *imageView2 = (UIImageView *)[sender viewWithTag:2]; 

    static NSInteger index = 0; 
    index++; 
    if (index % 2 == 0) { 
     [UIView transitionFromView:imageView1 toView:imageView2 duration:1.0 options:UIViewAnimationOptionTransitionFlipFromRight | UIViewAnimationOptionShowHideTransitionViews completion:NULL]; 
    } else { 
     [UIView transitionFromView:imageView2 toView:imageView1 duration:1.0 options:UIViewAnimationOptionTransitionFlipFromRight | UIViewAnimationOptionShowHideTransitionViews completion:NULL]; 
    } 
} 
+0

我試着去使用一個按鈕:) – user3344744

+0

@ user3344744只是你的子視圖添加到一個按鈕:d – c0ming

+0

看起來這麼複雜:)我是一個初學者,我們不能讓它簡單嗎? – user3344744

0

而不是使用的背景圖片;一種方式就可以實現翻頁效果是通過使用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];