1. 程式人生 > 程式設計 >IOS 螢幕適配方案實現縮放window的示例程式碼

IOS 螢幕適配方案實現縮放window的示例程式碼

背景:

公司有個iPad專案(只支援橫屏),是11年開發的,那時的iPad只有1024x768的解析度,所以沒有螢幕適配的問題,frame都是寫死的。後來不同尺寸的iPad相繼出現,本來應該會出現螢幕不能適配的問題,但是由於該專案沒有設定啟動圖,頁面會自動等比例縮放撐滿整個螢幕,各解析度的寬高比相差不多,所以並沒有出現太大問題。但是2020年3月4日,蘋果要求所有提交至 App Store 的 app 都須使用 Xcode storyboard(故事板) 來提供 app 的啟動螢幕,之前的不設定啟動圖取巧的方式就不能用了。

最理想的適配方案當然是AutoLayout,但改為AutoLayout改動太大,目前適配週期短,所以這種方案就淘汰了。然後考慮使用AutoResizing,改動小了很多,但是由於專案很大,頁面很多,改動時間還是有些長。

最後考慮了不設定啟動圖能正常適配的原理。考慮使用縮放Window的方案

縮放方案

1、window縮放

  self.window = [[UIWindow alloc] initWithFrame:CGRectMake(0,1024,768)];
  CGFloat scaleX = [UIScreen mainScreen].bounds.size.width / 1024;
  CGFloat scaleY = [UIScreen mainScreen].bounds.size.height / 768;
  self.window.transform = CGAffineTransformMakeScale(scaleX,scaleY);
  CGRect rect = self.window.frame;
  self.window.frame = CGRectMake(0,rect.size.width,rect.size.height);

2、螢幕尺寸的解析度需要自己寫死,不能使用screen的bounds

#define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width 
改為 #define SCREEN_WIDTH 1024
#define SCREEN_HEIGHT [UIScreen mainScreen].bounds.size.height 
改為 #define SCREEN_HEIGHT 768

3、在window上新增檢視,不要使用window.center來讓檢視居中。因為window.frame.origin 已經不是(0,0)了。

alertView.center = CGRectMake(1024 * 0.5,768 * 0.5)

此方案的缺點

1、如果使window等比例縮放,iPad Pro 11英寸上下會有一點黑邊。
2、如果使window寬高縮放撐滿整個螢幕,iPad Pro 11英寸會略微有些變形,不明顯
3、會有點模糊,不明顯
4、如果哪天新出一款iPad寬高比和以前的iPad差別比較大,縮放方案就不適用了。

到此這篇關於IOS 螢幕適配方案實現縮放window的示例程式碼的文章就介紹到這了,更多相關IOS 縮放window內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!