2012-11-11 39 views
0

在我的iPhone應用程序,我只是想設置一個特定的背景圖像,這取決於它是否是一個iPhone 5或沒有。問題設立一個回地面圖像和UIImageView的

所以,我嘗試兩種方法: A)使用

self.view.backgroundColor = [UIColor colorWithPatternImage:backGroundimage]; 

B)創建的UIImageView和設置圖像那裏。代碼:

UIImageView *backgroundImageView = [[UIImageView alloc]initWithFrame:screenBounds]; 
[backgroundImageView setImage:[UIImage imageNamed:backGroundImage]]; 
[self.view addSubview:backgroundImageView]; 

,但我有問題,與他們兩個:

與步驟A問題: 當我通過這種方式設定的圖像,我必須處理不同尺寸的圖像縮放問題的屏幕。我使用下面的代碼做scalling:

UIGraphicsBeginImageContext(screenBounds.size); 
[[UIImage imageNamed:backGroundImage] drawInRect:screenBounds]; 
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

self.view.backgroundColor = [UIColor colorWithPatternImage:image]; 

步驟A的另一個問題是,圖像顯得相當模糊。它不具有相同的銳度。

問題與步驟B: 這樣,圖像看起來非常清晰和銳利 - 只是它應該的樣子。

但是,當我切換到使用以下代碼另一視圖,奇怪的是在的UIImageView backgroundImageView仍然出現在第二個。我用它來切換視圖的代碼是:

[self presentViewController:secondViewController animated:YES completion:nil]; 

我甚至嘗試[backgroundImageView removeFromSuperview],但這也不解決任何問題。

那麼我做錯了什麼?我怎樣才能設置一個圖片作爲我的背景,這取決於iPhone的大小?

+0

self.view.backgroundColor = [UIColor colorWithPatternImage:backGroundimage]; 這是什麼backGroundimage? – Rushi

+0

backGroundImage在這裏不是問題。它指的是圖像的名稱,例如@「background.png」或@「backgroundiPhone5.png」等。 – BlueChips23

回答

0

B計劃是一個很好的計劃。呈現另一個視圖控制器應該並且一定會隱藏你的圖像視圖。如果沒有發生,那麼創建secondViewController時會出現問題,與呈現VC中的背景圖像無關。

之前呈現secondViewController,記錄它:

NSLog(@"presenting %@", secondViewController); 

我敢打賭美元,它是零。如果我是對的,讓我們看看你如何初始化secondViewController。這就是問題,與背景圖像視圖無關。

+0

我記錄了secondViewController,不幸的是它不是零。這裏是我用來初始化我的第二個控制器的代碼:SecondViewController * secondViewController = [[SecondViewController alloc] initWithNibName:@「SecondViewController」bundle:[NSBundle mainBundle]];我記得與另一個項目有同樣的問題,直到我剛剛擺脫了UIImageView。 – BlueChips23

0

好吧,我終於解決了這個問題,雖然這個問題的原因一直困擾着我。

爲了解決這個問題,我不得不創建UIImageView的一個IBOutlet屬性,並把它掛在XIB文件。

我之所以編程方式創建的UIImageView是因爲的UIImageView的大小取決於他們使用什麼尺寸的iPhone。但是對於IBOutlet(我們將其稱爲UIImageViewOutlet,我只是使用[self.UIImageViewOutlet setFrame:]來獲得我想要的大小和位置。

我還發現,我以編程方式創建的按鈕之一是在第二個ViewController中仍然可見。我最終在XIB文件上創建了一個Outlet,並使用它的setFrame來正確定位它。

如果有誰知道這個問題的原因,我會非常感謝。

+0

如果你不介意提供你的代碼來解決你的問題。因爲我在示例項目中沒有遇到任何問題。 –