1. 程式人生 > >iOS 設定App的名稱

iOS 設定App的名稱

App的名字設定方式有很多種,如果在App打包上線時不做修改,最終App的名字就是Xcode在建立工程時的名字。好的習慣是工程建立時使用英文(pinyin),那麼App也就是“英文”名字了,雖然Xcode也支援直接用中文命名工程(甚至是方法名……),但有時也會因此產生一些不必要的麻煩甚至莫名其妙的bug。

本文主要介紹兩種設定App名稱的方法,第一種較為簡單,第二種涉及簡單的版本國際化與本地化(Localization)的問題。

1.Bundle display name

先看此方法的具體設定步驟:

  • 建立工程如下,如果不設定App名,預設的App名就是工程名了。

QQ截圖20160309174314.png

  • 點選工程-TARGETS-Info,新增“Bundle display name”,string值填寫要設定的App名稱。

QQ截圖20160309174324.png

  • 再次編譯,效果如下,這個方法就是這麼簡單了。

1468630-7d782f2d30827276.png

具體也沒太多好說的,檢索App名稱設定時,大部分答案也是這個,因為比較簡單。

這裡提一下Bundle name和Bundle display name:

2.InfoPlist.strings->CFBundleDisplayName

這種方法較為繁瑣,但是可以支援多語言版本名稱的設定,即Localization,也先看具體步驟:

  • 新建一個Strings File,命名應該不一定非得是InfoPlist.strings,應該是沿用習慣。

54.png

  • 點選工程-PROJECT-Info-Localizations,新增簡體中文支援,如果想支援繁體,也可繼續新增,其他語言亦然。

QQ截圖20160309174007.png

QQ截圖20160309174019.png

  • 點選之前建立的InfoPlist.strings - 點選右邊的“Localizion”- 新增簡體中文

1468630-d4b52eb0f01a6ad1.png

可以選擇支援英文

1468630-a885a69c4cf737ca.png

QQ截圖20160309173853.png

  • 分別設定中英文名字

"CFBundleDisplayName" = "中文名字";

"CFBundleDisplayName" = "EnglishName";

名字字串自己填寫就好,這裡只是示範

QQ截圖20160309173740.png

  • 編譯工程

分別切換模擬器的設定中的語言至中英文模式,分別檢視appiocn下面的名字的變化:

'.png

3.關於預設語言的設定:Localization native development region

Xcode建立工程時,預設語言環境是英文,所以在呼叫一些系統空間時(例如相機相簿),其控制按鍵的標題都是英文顯示的狀態,快速的設定方法就是設定Localization native development region的值,具體步驟可以參考此文:

Localization native development region 更改語言無效 中的第一段內容。

4. Localizations版本國際化

這個就是為了讓APP支援多國語言環境,最好的Demo應該是環信的官方Demo,這裡只是介紹一下簡單的用法:

  1. 同新增InfoPlist.strings的做法相同,新增一個Localizable.strings檔案

  2. 對應中英文(其他語言自行新增),分別新增下列語句:

1 2 3 4 5 6 7 8 9 "alertTitle" "標題"; "alertMessage" "資訊"; "alertOk" "確認"; "alertOther" "其他"; "alertTitle" "title"; "alertMessage" "message"; "alertOk" "confirm"; "alertOther" "other";

關於上述的key和value,只是示範,可自行定義,呼叫這些key-value需要利用NSLocalizedString(<#key#>, <#comment#>)系統巨集,例如:NSLocalizedString(@"alertTitle", @"這是一句註解,根據情況寫"),第一個引數即在strings檔案中自定義的key,根據不同的語言環境,系統會自動檢測這個key對應的value(中文還是英文),第二個引數是註釋,為了便於理解,可以為nil。
實際用例:

1 2 3 4 5 6 7 - (void)createAlertViewWithTitle:(NSString *)title message:(NSString *)message delegate:(id)delegate cancel:(NSString *)cancel andOther:(NSString *)other { UIAlertView * alert = [[UIAlertView alloc] initWithTitle:title message:message delegate:delegate cancelButtonTitle:cancel otherButtonTitles:other, nil]; [alert show]; } //呼叫 [self createAlertViewWithTitle:NSLocalizedString(@"alertTitle", @"這是一句註解,根據情況寫") message:NSLocalizedString(@"alertMessage", @"") delegate:nil cancel:NSLocalizedString(@"alertOk", nil) andOther:NSLocalizedString(@"alertOther", nil)];

分別設定系統的語言環境至中英文模式,效果如下:

QQ截圖20160309173458.png

上面的寫法看起來比習慣上直接寫string去設定標題要麻煩許多,但是常用的標題可以進行二次巨集定義管理,那樣不僅使用方便,還便於統一管理。
看一下環信Demo中的示範:

1468630-1b6e905c3d91a528.png