[英]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的更大圖像。 它不是那么大,所以內存占用不是問題! 看看UIImageView
的contentMode
屬性。 您可以使用它來調整較大圖像的位置。 您還可能需要檢查UIImageView
的clipSubviews
屬性,以便在圖像不是全屏時剪切圖像。
相信我,在我的公司,我們有一些鈎子,比如~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.