2013-09-23 76 views
1

我設置一個隨機的背景圖片爲我的應用程序通過加載圖像並將其添加到我的視圖縮放:設置視網膜背景圖像出現在

UIImageView *background = [[UIImageView alloc] 
           initWithImage:[UIImage imageNamed: 
           [NSString stringWithFormat:@"bg%u.jpg", 1+arc4random_uniform(15)]]]; 
    [self.view addSubview:background]; 
    [self.view sendSubviewToBack:background]; 

我的圖片640x1136在326 PPI,但圖像出於某種原因放大。任何想法爲什麼會被讚賞。

模擬器

http://i.stack.imgur.com/dU38H.png

實際圖像:

http://i.stack.imgur.com/TIm9F.png

感謝。

+0

與PNG文件,而不是嘗試。這可能是轉換問題 –

+0

@Nick background.frame = self.view.frame;然後addSubView: – Spynet

+0

@ b3ginneriOS轉換爲PNG不幸的是似乎不工作。 –

回答

1

這是因爲你的Alloc與你的形象初始化,不與固定大小。

int screenHeight = [UIScreen mainScreen].bounds.size.height; 
int screenWidth = [UIScreen mainScreen].bounds.size.width; 


UIImageView *background = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, screenWidth, screenHeight)]; 

background.image = [UIImage imageNamed:[NSString stringWithFormat:@"bg%u.jpg",1+arc4random_uniform(15)]] 

[self.view addSubview:background]; 
[self.view sendSubviewToBack:background]; 

做這樣的

+0

什麼是screenWidth和screenHeight? – Spynet

+0

我編輯了我的答案 – incmiko

+0

根據假設你對降採樣是正確的假設改變了答案,儘管圖像在iphone屏幕上看起來是一樣的(可能太小而看不到)。它在你編輯之後起作用。謝謝。 –

0

嗨嘗試這樣,

UIImageView *background = [[UIImageView alloc] 
           initWithImage:[UIImage imageNamed: 
           [NSString stringWithFormat:@"bg%u.jpg", 1+arc4random_uniform(15)]]]; 

    background.frame = self.view.frame; // this is the only line you have missed 
    [self.view addSubview:background]; 
    [self.view sendSubviewToBack:background]; 
+1

挑選圖像這不是正確的解決方案。圖像將被縮減採樣,它看起來就像在非視網膜手機上看起來一樣。 – micantox

+0

我在iPhone5上測試這個,圖像顯示高分辨率,有什麼想法? –

+0

我不知道降採樣(或Spynet代碼不好),但我知道,我的答案是正確的。 – incmiko