回答
的NSLocale
可以告訴你:
NSLocale *locale = [NSLocale currentLocale];
BOOL isMetric = [[locale objectForKey:NSLocaleUsesMetricSystem] boolValue];
只有三個國家不使用公制:美國,利比里亞和緬甸。後者使用自己的系統,前兩個使用英制單位。
蘋果文件說(重點煤礦):
NSLocaleUsesMetricSystem
的指示區域是否使用公制標誌的關鍵。 相應的值是布爾NSNumber對象。 如果該值爲NO,那麼通常可以假定美國的度量單位(例如法定英里數)。
適用於iOS 2.0及更高版本。
你或許應該只需要在你的應用程序的設置,讓您的用戶選擇 - 這是蘋果確實在天氣應用程序。
如果你想選擇一個合理的默認值,你可以看看語言環境。如果是美國,則選擇英制,否則選擇公制。這是一種啓發式的方法,有時候會出錯,但它只是一個可以改變的默認設置。
我試圖這樣做。我有一個視圖控制器應該顯示單位制(釐米/英尺和英寸),並在兩者之間進行轉換。我使用切換開關(off:metric/on:imperial,默認值:off)製作了一個設置包。這在我第一次啓動應用程序時起作用。然而,如果我改變爲帝國,這種變化會經歷,但是變回( - >度量)並不會產生任何影響。想法? – coernel
這裏有一個快速的版本
var locale = NSLocale.currentLocale()
let isMetric = locale.objectForKey(NSLocaleUsesMetricSystem) as! Bool
謝謝!對於Swift 2將會是:let locale = NSLocale.currentLocale() – Lucas
爲SWIFT 3
let locale = NSLocale.current
let isMetric = locale.usesMetricSystem
但是僅適用於iOS 10+;不清楚你如何在iOS 9的Swift 3應用中做到這一點。 – JLundell
'Locale.current。usesMetricSystem'在iOS 9中運行良好。 –
@DarkDust答案swift3
//User region setting return
let locale = Locale.current //NSLocale.current
//Returns true if the locale uses the metric system
let isMetric = locale.usesMetricSystem
- 1. 網站如何知道您的公制系統,日期格式...?
- 2. iOS系統音量控制
- 3. 系統如何知道財政年度?
- 4. 如何在wpf應用程序中添加公制和英制系統
- 5. GWT輕量級公制系統
- 6. 如何控制/強制iOS系統音量[科爾多瓦]
- 7. VB.NET如何強制Asc在非英文系統上使用英文代碼頁
- 8. Windows的默認PATH系統變量?
- 9. 我如何知道在iOS上繪製屏幕的時間?
- 10. iOS粒子系統控制
- 11. 如何使用UISlider控制iOS系統音量
- 12. Eclipse - 如何設置默認系統庫
- 13. 如何知道通知中的默認樣式的字體系列?
- 14. 如何在CLLocationManager中強制默認語言爲英語?
- 15. Postgres的公制英制轉換
- 16. 如何在iOS上收聽系統複製事件?
- 17. 默認的WordML單位測量?像素或點或英寸
- 18. Rake不知道如何構建任務:默認或minitest
- 19. 如何限制系統上頁面緩存的數量?
- 20. Slack默認頻道通知
- 21. 如何檢索「單位制」公制(公斤,釐米)/英制(磅,英寸)的商店
- 22. 如何獲取C#progressbar上的默認系統風格
- 23. 如何查找BlackBerry上的系統默認貨幣符號?
- 24. Vim Editor(在控制檯子系統下)如何知道我按下的鍵?
- 25. 爲UIPickerView創建公制和英制高度數組?
- 26. VB將長度從英制轉換爲公制
- 27. 如何獲得用戶首選的單位? (公制(米)還是英制(英里))?
- 28. Zend_Measure可以檢測公制系統嗎?
- 29. 限制系統文件訪問公共
- 30. Xcode使用自制gcc代替系統默認
注:英國使用公制和英制的組合。重量往往以千克爲單位,但距離(特別是在道路上)仍以英里爲單位。 –
@DarkDust謝謝,這確實是一個解決方案。我現在唯一的問題是,如果用戶在多選時運行我的應用程序時,更改了iPad首選項的區域設置,那麼如何更新我的應用程序中的設置。我只能在viewDidAppear中檢查它,但有沒有更好的解決方案? – aneuryzm
@Patrick:檢查'UIApplicationDelegate'的'applicationDidBecomeActive:'方法(或訂閱相應的通知,'UIApplicationDidBecomeActiveNotification')和/或訂閱'NSCurrentLocaleDidChangeNotification'。 – DarkDust