簡體   English   中英

切換背景圖像iphone5 - iphone4

[英]switch background image iphone5 - iphone4

在我的FirstViewController ,如果設備是iPhone4或iPhone5,我已經為交換機后台編寫了這段代碼:

文件名:bg-for5-568@2x.png
bg-for4@2x.png
BG-for4.png

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIImage *backgroundImage = [[UIImage alloc] init];
    if([[UIScreen mainScreen]bounds].size.height == 568)
    {
       backgroundImage = [UIImage imageNamed:@"bg-for5-568h"];
    }
    else
   {
       backgroundImage = [UIImage imageNamed:@"bg-for4"];
   }
   self.view.backgroundColor = [[[UIColor alloc] initWithPatternImage:backgroundImage] autorelease];
   [backgroundImage release];
}

當我在我的模擬器上隱藏應用程序時,iphone5的背景顯示雙倍大小,在視圖之外。

/ *謝謝你* /

我不確定這是否是這個問題的解決方案因為我缺少一些信息,但是:

首先:從imageNamed:方法中imageNamed: .png 從iOS4開始,你不應再這樣做了。 接下來是:你的形象名稱是什么? 請注意,iPhone5有一個視網膜顯示器,您的圖像應命名為bg-for5-568h@2x.png但在源代碼中稱為bg-for5-568h

除此之外:幾乎在你的圖像不是照片的每一種情況下,你正在做的是一個壞主意。 即使它是一張照片,也只需使用iPhone 4和4S的更大圖像。 它不是那么大,所以內存占用不是問題! 看看UIImageViewcontentMode屬性。 您可以使用它來調整較大圖像的位置。 您還可能需要檢查UIImageViewclipSubviews屬性,以便在圖像不是全屏時剪切圖像。

相信我,在我的公司,我們有一些鈎子,比如~ipad,~iphone,~2x甚至可伸縮的圖像。 所有這些鈎子工作正常,直到約會,蘋果公布了類似的東西或簡單的新設備。 所以我決定不再做這種鈎子了。 它們在一開始似乎非常有用,但是當市場上出現新的東西時你遇到的麻煩是不值得的!

您應該為所有視網膜圖像附加@ 2x后綴。 在您的情況下,您的圖像應存儲為“bg-for5-568h@2x.png”。 希望它能解決這個問題。

我不建議這樣做,如果Apple再次更改屏幕大小並且你必須返回並重寫所有代碼怎么辦?

一個簡單的解決方法是使用:

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

這可能會給你拉伸或平鋪的一些問題。

我更喜歡使用

 UIImage* imageName = [[UIImage imageNamed:/*image name*/]resizableImageWithCapInsets:UIEdgeInsetsMake(top,left,bottom,right)];

在iOS 6中,您可以通過定義是希望圖像拉伸還是平鋪來進一步改進。 這允許您創建一個不會改變的邊框,然后默認情況下將圖像的中心平鋪並填充圖像視圖的空間

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM