iOS經典講解之適配iOS 11那些事-持續更新...

來源:互聯網
上載者:User

作者:劉新林

轉載請標明出處:http://blog.csdn.net/loving_ios/article/details/78573630

1、訪問相簿許可權 NSPhotoLibraryAddUsageDescription

有的文章中提及iOS 11將訪問相簿許可權的NSPhotoLibraryUsageDescription改成了NSPhotoLibraryAddUsageDescription。實際並非如此通過官方API 解釋iOS 10新增的訪問相簿許可權是infoplist檔案需要添加NSPhotoLibraryUsageDescription,但在iOS 11中系統預設訪問相簿許可權是開啟的,不添加NSPhotoLibraryAddUsageDescription也是沒問題的,但是如果儲存圖片時就會crash,所以iOS 11新增的NSPhotoLibraryAddUsageDescription只是在儲存照片時添加即可。

2、訪問位置許可權 NSLocationAlwaysAndWhenInUseUsageDescription

iOS 11以下版本訪問位置許可權需要添加NSLocationAlwaysUsageDescription(始終允許),NSLocationWhenInUseUsageDescription(使用時),但在iOS 11中就會發現無法訪問位置,其實iOS 11新增NSLocationAlwaysAndWhenInUseUsageDescription,而之前的NSLocationAlwaysUsageDescription降為NSLocationWhenInUseUsageDescription,所以適配iOS 11需要添加新key NSLocationAlwaysAndWhenInUseUsageDescription,但之前的也不要刪掉,為了適配iOS 11以下版本。

3、Xcode9控制台列印線程警告

Xcode9,iOS 11運行程式控制台列印一堆類似於Main Thread Checker: UI API called on a background thread: -[UIApplication statusBarOrientation]的線程警告,造成的原因是本該在主線程執行的代碼放在了子線程中。

解決方案:在scheme裡面關掉主線程監測(不提倡)


出現列印問題最好的方法是把出問題的代碼放在主線程裡邊即可 ,例如我發現項目中shareSDK 內部有狀態列設定在子線程 。查看其最新SDK已適配iOS 11,所以升級shareSDK已解決問題,關於其他的代碼根據警告同理修改即可。

4、初始化UIBarButtonItem與iOS11以下版本區別

用initWithCustomView:初始化BarButtonItem時在iOS 11可以直接用不指定frame的控制項初始化,顯示是沒問題的,而在以下版本需要指定frame例如UILabel可以用sizeToFit,添加titleView 時的控制項同樣的原理,iOS 11可以不指定大小,直接顯示。而在小於iOS 11的系統是不顯示的(當然指定大小iOS 11也是沒問題的,所以適配版本最好是代碼完善,適配各種情況)。這與iOS 11修改NavigationBar的圖層有關係。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.