2012-07-31 103 views
-1

我看到了不同的應用程序,每次在視圖背景上打開應用程序時,圖像都會發生變化。這是如何完成的?適用於iOS應用程序背景的多個圖像

+0

你的意思是「應用程序在視圖背景上打開」是什麼意思?安裝應用程序後無法更改啓動圖像。你的意思是別的嗎?你能舉一個你想要的應用程序的例子嗎? – Jim 2012-07-31 18:43:55

+0

每次打開應用程序時,視圖背景的圖像都會更改。 FHU Mobile就是這樣做的。 – user717452 2012-07-31 18:54:40

回答

0

加background_0.png,background_1.png,background_2.png,background_3。 PNG等你的項目。

#define max_image_number 3

以下添加到您的viewDidLoad方法:

-(void)viewDidLoad { 
    [super viewDidLoad]; 
    [self updatedBackgroundImage]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateBackgroundImage) name:UIApplicationWillEnterForegroundNotification object:nil]; 
} 

-(void) updateBackgroundImage{ 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

    if (![defaults integerForKey:@"imageNumber"]) { 
       [defaults setInteger:0 forKey:@"imageNumber"]; 
      } 

      int i = [defaults integerForKey:@"imageNumber"]; 

      myUIimageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"background_%d.png",i]]; 
      i++; 

      if (i > max_image_number) { 
       [defaults setInteger:0 forKey:@"imageNumber"]; 

      }else{ 
       [defaults setInteger:i forKey:@"imageNumber"]; 
      } 
    ... 

    } 

以上將更新圖像第一次加載的viewController時,也當它在後臺運行,則返回。我認爲這就是你想念的東西:)。

請記住停止偵聽viewDidUnload方法中的通知,並且應該設置。

+0

爲什麼這樣做得到了降低。回答這個問題的詳細情況 – AppHandwerker 2012-07-31 21:24:43

+0

不知道......不是我投票的結果......可能是Jim或Teodor,因爲他們仍然不明白這個問題。 – user717452 2012-07-31 22:00:33

+0

是你要找的答案嗎?請接受,如果它是。如果它不是那麼也可以說的路,我會嘗試修復它。 – AppHandwerker 2012-08-01 07:26:39

0

查看您提到的應用程序的App Store中的屏幕截圖,看起來好像主菜單的視圖層次結構後面只有一個UIImageView。您可以通過將UIImage對象分配給其image屬性來更改此對象。

+0

是的,我知道如何設置背景圖片。但是,他們的背景圖像會定期變化。 – user717452 2012-07-31 19:01:33

+0

我真的不知道你在問什麼。如果你知道如何改變圖像,那麼什麼阻止你改變它? – Jim 2012-07-31 19:08:37

+0

@TeodorCarstea您的評論將被標記爲無用。在應用程序中,下載它之後,它將顯示一個圖像作爲標籤欄控制器的背景。稍後,您可能會再次啓動應用程序,現在背景不同。這就是我想要做的,不只是改變它一次,並重新提交二進制文件 – user717452 2012-07-31 20:03:03

0

假設您想要更改一個或多個視圖的背景圖像,具體取決於應用程序啓動。

int x = 0保存到NSUserDefaults中。在每個應用程序的啓動1。增加它當你提出一個觀點,檢查int和設置這樣一個背景圖片:

switch(x%3){// %3 just to make it a bit random 
    case 0://set this image; 
     break; 
    case 1://set that image 
     break; 
     //and so on 
} 
1

這聽起來像你所看到的是iOS系統在將它放入背景之前對你的應用程序進行的緩存截圖。

這是自動處理的,你有機會截獲這個。

看看這個答案,你可以在你的應用程序上放置一個圖像,就像它進入後臺一樣,這將被緩存並用於重新啓動應用程序。