APP審核/支援iPhone5

來源:互聯網
上載者:User

iPhone5的螢幕解析度  640象素 x 1136象素 。

升級準備

  為了支援iPhone5,我們首先需要準備以下工具和資源:

  1.下載最新版的XCode4.5

  2.讓美術同學提供640 x 1136解析度的啟動畫面,640 x 1136解析度的程式(用於在app store中顯示)

  3.由於iPhone5使用的A6處理器採用了新的armv7s架構,所以如果你使用了第三方的靜態連結庫,需要下載對應支援armv7s的版本。我們由於使用了第三方的資料統計工具Flurry,所以下載更新了Flurry的靜態連結庫。

  4.如果你的顯示器解析度太小,將無法顯示完整的iPhone5模擬器,可選的解決辦法是換個更大的顯示器或者把顯示器豎起來,或者可以在啟動模擬器後,用快速鍵command+3(50%),command+2(75%), command+1(100%),來調整模擬器的顯示比例。

  具體升級步驟如下:

  升級啟動畫面和第三方連結庫

  升級啟動畫面,將美術同學提供的640 x 1136解析度的啟動畫面圖片,命名為Default-568h@2x.png,添加到工程中即可。

  升級第三方連結庫,這個只需要用新的第三方連結庫替換掉以前的即可。如果你使用了例如opencv這種需要自己編譯對應版本連結庫的開源庫,那麼替換之前,需要自己先用xcode4.5編譯其armv7s版本的靜態連結庫。

  調整xib檔案

  粉筆網用戶端的介面基本上都是頂部是UINavigationBar, 底部是UITabBar或UIToolBar,中間是UITableView。

  對於這一類介面,調整起來非常簡單,只需要將UITableView設定成高度自動擴充的Autosizing方式,如所示:

  對於底部的UIToolBar,Autosizing設定成靠底部對齊的方式即可。如所示:

  代碼調整

  有一些介面元素的位置是用代碼來設定的,例如“發表筆記”介面中浮動貼在IME鍵盤上面的各種可選操作的UIToolbar。因為鍵盤的高度在不同的IME下是不一樣的,所以需要用代碼動態調整。

  我的調整代碼如下:

1  // 說明:keyboardWillShow函數和keyboardWillHide函數分別監聽了
2  // UIKeyboardWillShowNotification和UIKeyboardWillHideNotification
3
4  - (void) keyboardWillShow:(NSNotification *)notification {
5  NSDictionary * info = [notification userInfo];
6  CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
7  float textViewHeight = UI_SCREEN_HEIGHT - UI_STATUS_BAR_HEIGHT - UI_NAVIGATION_BAR_HEIGHT - UI_TOOL_BAR_HEIGHT - kbSize.height;
8  [UIView animateWithDuration:0.3 animations:^{
9  _textView.frame = CGRectMake(0, UI_NAVIGATION_BAR_HEIGHT, UI_SCREEN_WIDTH, textViewHeight);
10  _toolbar.frame = CGRectMake(0, UI_NAVIGATION_BAR_HEIGHT + textViewHeight, UI_SCREEN_WIDTH, UI_TOOL_BAR_HEIGHT);
11  }];
12  }
13
14  - (void) keyboardWillHide:(NSNotification *)notification {
15  CGSize kbSize = CGSizeMake(320, 216);
16  float textViewHeight = UI_SCREEN_HEIGHT - UI_STATUS_BAR_HEIGHT - UI_NAVIGATION_BAR_HEIGHT - UI_TOOL_BAR_HEIGHT - kbSize.height;
17  [UIView animateWithDuration:0.3 animations:^{
18  _textView.frame = CGRectMake(0, UI_NAVIGATION_BAR_HEIGHT, UI_SCREEN_WIDTH, textViewHeight);
19  _toolbar.frame = CGRectMake(0, UI_NAVIGATION_BAR_HEIGHT + textViewHeight, UI_SCREEN_WIDTH, UI_TOOL_BAR_HEIGHT);
20  }];
21  }

  可以看到,我將裝置的各種高度都定義成了宏,這裡的宏UI_SCREEN_HEIGHT表示整個裝置的高度,以前這個宏的值是固定的480,現在因為iPhone5中高度值變了,所以我們將這個宏定義改成了如下的值,這樣,所有相關的用代碼實現的介面位置調整都搞定了。我的UI相關的宏定義如下:

1  #define UI_NAVIGATION_BAR_HEIGHT        44
2  #define UI_TOOL_BAR_HEIGHT              44
3  #define UI_TAB_BAR_HEIGHT               49
4  #define UI_STATUS_BAR_HEIGHT            20
5  #define UI_SCREEN_WIDTH                 320
6  // 將以下宏定義的值從480改成[[UIScreen mainScreen] bounds].size.height
7  #define UI_SCREEN_HEIGHT                ([[UIScreen mainScreen] bounds].size.height)

  如果你以前沒有將這些裝置的高度值抽取成宏,我建議你通過尋找替換,先將所有用到480的地方修改成宏,然後再增加上面的宏定義即可。

  當然,也有一些調整稍微複雜一些,例如粉筆網首頁的上拉載入更多,需要判斷上拉高度是否到達閾值,這些也是和裝置高度相關的。這些閾值資訊以前可能就直接寫成和高度相關的值,例如220什麼的,這些通過直接尋找480還沒法直接找到。

  對於這些問題,只能是通過在模擬器中測試,發現問題,然後再把這些“Magic Number”替換成用上面提到的宏計算的公式。例如我們的上拉載入更多的閾值宏定義如下:

1  #define LOAD_MORE_TEXT_HEIGHT 77
2  // 顯示文字閾值
3  #define LOAD_MORE_THRESHOLD (UI_SCREEN_HEIGHT - UI_STATUS_BAR_HEIGHT - UI_NAVIGATION_BAR_HEIGHT - UI_TAB_BAR_HEIGHT - LOAD_MORE_TEXT_HEIGHT)
4  // 重新整理閾值
5  #define LOAD_MORE_MAX       (LOAD_MORE_THRESHOLD + 10.0)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.