1.iOS9-13,每個版本講一個特性:
iOS9系統(tǒng)發(fā)送的網絡請求將統(tǒng)一使用HTTPs细睡,將不再默認使用HTTP等不安全的網絡協(xié)議勤揩,而默認采用TLS 1.2俗批。服務器因此需要更新俗或,以解析相關數(shù)據(jù)。如不更新扶镀,可通過在 info.plist 中聲明蕴侣,倒退回不安全的網絡請求。
· 將允許出現(xiàn)這種場景:同一app中多個location manager:一些只能在前臺定位臭觉,另一些可在后臺定位
· bitcode的理解應該是把程序編譯成的一種過渡代碼昆雀,然后蘋果再把這個過渡代碼編譯成可執(zhí)行的程序。bitcode也允許蘋果在后期重新優(yōu)化我們程序的二進制文件蝠筑,有類似于App瘦身的思想狞膘。
· stackView
· Multasking:多任務特性,三種形式
· 臨時調出的滑動覆蓋:Slide Over
視頻播放的畫中畫模式(Picture in Picture)(AVPlayerViewController默認支持什乙。MPMoviePlayerViewController被deprecated掉了挽封,不支持)
iPad真正同時使用兩個App
· UI Test:iOS9.0之前加入異步代碼測設和性能測試,可以說Xcode自帶的測試框架已經能滿足絕大部分單元測試的需求了臣镣,但是這并不夠辅愿,因為開發(fā)一個iOS app從來都是很注重UI和用戶體驗的,之前UI測試使用KIF忆某,Automating点待,iOS9.0的Xcode給出了自帶的XCUITest的一系列工具,和大多數(shù)UI測試工具類似弃舒,XCUI使用Accessbility標記來確定view癞埠,但因為是Apple自家的東西,可以自動記錄操作流程聋呢,所以只要書寫最后的驗證部分就好了苗踪,比其他UI測試工具方便多了
· Swift2
· APP Thinning:app為了后向兼容,都同時包含了32bit和64bit削锰,在圖片資源2X和3X的一應俱全通铲,下載的時候只需要當前機型對應的一套資源,但是卻要全部打包下載器贩,現(xiàn)在只需要升級iOS9测暗,就可以省很多流量
· 3D touch
· 地圖顯示實時的交通狀況
· 人工智能siri更加智能,幾個大城市的地鐵及火車站入口都有詳細的標識
· 手機電池的低功耗設置
· Spootlight磨澡,你的設備會向推薦最近通話過的聯(lián)系人,使用過的APP以及你可能感興趣的去處质和、信息呈現(xiàn)更精彩稳摄。
iOS10新特性
· SiriKit 在 iOS 10 里面開發(fā)者可以使用 Siri SDK,這可能是 iOS 10 最重要的新 SDK之一饲宿。從此開發(fā)者可以使用原生API提供語音搜索厦酬、語音轉文字消息甚至更多常見語音功能胆描。
· Proactive Suggestions 貌似是一個和 CoreSpotlight 有整合的使用建議的東西。
· Message App Extension 在 iOS 10 里面開發(fā)者可以給 Message.app 提供兩種 App Extension仗阅,分別是可以提供一個表情包昌讲,和一個自定義的界面,用于表情搜索等减噪。
· User Notifications 這個 API 讓你可以處理本地或遠程的用戶通知短绸,并且可以基于某個條件,例如時間或者地理位置筹裕。這個異常強大醋闭,好像可以在通知里包含圖片和視頻了,貌似可以攔截并替換自己 app 發(fā)下來的 payload朝卒。
· Speech Recognition 見聞知意证逻,語音識別 API,可以把音頻流實時的轉換為文本抗斤。雖說早期版本已經有了TTS語音轉文字囚企,但畢竟Siri語義識別的加入讓機器對自然語義的把握更精準,詳見Speech.framework
· App Search Enhancements 對 CoreSpotlight 的增強瑞眼,其中我比較感興趣的是 Visualization of validation results龙宏。
· Widget Enhancements 為了配合 iOS 10 鎖屏下面 Widget 的體驗,蘋果提供了 widgetPrimaryVibrancyEffect 和 widgetSecondaryVibrancyEffect 用于定制化 Widget 的界面负拟。
· CallKit callkit框架 VoIP應用程序集成與iPhone的通話界面烦衣,給用戶一個很棒的體驗,鎖屏后VoIP網絡電話可以直接用iPhone系統(tǒng)UI接聽了掩浙。
· App Extensions 其實上面也有提到花吟,iOS 10最重要的開發(fā)特點就是允許第三方應用對自帶基礎app的拓展關聯(lián), 全新 7 種 App Extension:
Call Directory(VoIP回調)
Intents(接Siri厨姚、Apple map等服務)
Intents UI(接Siri衅澈、Apple map等服務的自定義界面)
Messages(iMessage拓展)
Notification Content(內容通知)
Notification Service (服務通知)
StickerPack(iMessage表情包)
· Custom Keyboard 對第三方鍵盤的改進 通過 handleInputModeListFromView:withEvent: 可以彈出系統(tǒng)鍵盤列表。同時使用 documentInputMode 可以檢測輸入上下文中的語言谬墙,你可以對輸入方式進行一些類似于對齊方式的調整今布。
另外需要注意的是,和以往歷代iOS版本推出一樣拭抬,新陳代謝部默,有新SDK、新API的開放造虎,也會有舊的API被遺棄傅蹂,所以好好檢查你的項目,使用了被遺棄的API要盡快修改,以免不兼容份蝴!還有個要注意的問題 iOS10 對隱私權限的管理更為嚴格 犁功,比如訪問的攝像頭、麥克風等硬件婚夫,都需要提前請求應用權限浸卦、允許后才可以使用,或者現(xiàn)在要提前聲明案糙,雖然以往要求不嚴格限嫌。
iOS11導航欄
設置導航欄大標題:navigationBar.prefersLargeTitles,顯示的時機可以用navigationItem.largeTitleDisplayMode設置枚舉值侍筛。
設置導航欄搜索控制器
searchController :self.navigationItem.searchController = searchController
3.上面設置titleView為customView時出現(xiàn)寬度縮小的問題 (這個網上提到了這個問題萤皂,但是我自定義代碼并沒有出現(xiàn)這個情況)
3.調整相冊權限的key
NSPhotoLibraryUsageDescription改為NSPhotoLibraryAddUsageDescription
。(beta版本好像又改過來了匣椰,我現(xiàn)在沒有調整key也是可以訪問相冊的)
4.近場通訊
首先也要在info.plist配置NFCReaderUsageDescription
5.無線配備
- 棄用API裆熙,scrollview和tableview的改變
iOS11棄用了automaticallyAdjustsScrollViewInsets
屬性,新增contentInsetAdjustmentBehavior
來替代它禽笑。這可能使得一些刷新出現(xiàn)頭部錯亂入录。contentInsetAdjustmentBehavior其實是一個枚舉值。用來管理adjustedContentInset
-automatic和scrollableAxes一樣,scrollView會自動計算和適應頂部和底部的內邊距并且在scrollView不可滾動時,也會設置內邊距.
-scrollableAxes自動計算內邊距.
-never不計算內邊距
-always根據(jù)safeAreaInsets計算內邊距
我們這里要設置為never佳镜,所以我們的OC代碼可以這樣寫:
聲明tableView的位置 添加下面代碼
if(@available(iOS11.0, *)) {self.tableView.contentInsetAdjustmentBehavior =UIScrollViewContentInsetAdjustmentNever;self.tableView.contentInset =UIEdgeInsetsMake(0,0,0,0);self.tableView.scrollIndicatorInsets = _tableView.contentInset; }
在iOS8引入Self-Sizing之后,我們可以通過實現(xiàn)estimatedRowHeight相關的屬性來展示動態(tài)的內容僚稿。Self-Sizing在iOS11下是默認開啟的,Headers,Footers, and cells都默認開啟Self-Sizing蟀伸,所有estimated高度默認值從iOS11之前的 0 改變?yōu)閁ITableViewAutomaticDimension.
如果目前項目中沒有使用estimateRowHeight屬性蚀同,在iOS11的環(huán)境下就要注意了,因為開啟Self-Sizing之后啊掏,tableView是使用estimateRowHeight屬性的,就會可能會使代理方法設置高度失效.
通過以下方法進行關閉:
Table Views:separatorInset 擴展
iOS 7 引入separatorInset屬性蠢络,用以設置 cell 的分割線邊距,在 iOS 11 中對其進行了擴展迟蜜∩部祝可以通過新增的UITableViewSeparatorInsetReference枚舉類型的separatorInsetReference屬性來設置separatorInset屬性的參照值。
typedefNS_ENUM(NSInteger,UITableViewSeparatorInsetReference) {UITableViewSeparatorInsetFromCellEdges,//默認值娜睛,表示separatorInset是從cell的邊緣的偏移量UITableViewSeparatorInsetFromAutomaticInsets//表示separatorInset屬性值是從一個insets的偏移量}
7.拖放
8.文件管理
9.tableView右滑操作
增加了兩個代理方法來取代原來的代理方法(tableView: editActionsForRowAtIndexPath:)
// Swipe actions// These methods supersede -editActionsForRowAtIndexPath: if implemented- (nullableUISwipeActionsConfiguration)tableView:(UITableView)tableView leadingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath)indexPath- (nullableUISwipeActionsConfiguration)tableView:(UITableView)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath)indexPath
創(chuàng)建UIContextualAction對象時髓霞,UIContextualActionStyle有兩種類型,如果是置頂畦戒、已讀等按鈕就使用UIContextualActionStyleNormal類型方库,delete操作按鈕可使用UIContextualActionStyleDestructive類型,當使用該類型時障斋,如果是右滑操作薪捍,一直向右滑動某個cell,會直接執(zhí)行刪除操作,不用再點擊刪除按鈕酪穿。
10.Safe Area
以前做懸浮(支付晴裹,頭部標題等)被济,系統(tǒng)為我們提供了viewController的topLayoutGuide和bottomLayoutGuide方法進行約束,但是在iOS11中被廢棄了涧团,引用了一個新的概念只磷。safeArea,它提供兩種方式:safeAreaInsets或safeAreaLayoutGuide來提供給你safeArea的參照值泌绣,即insets或者layout guide钮追。同時如果改變Insets時會獲得兩個回調
UIView.safeAreaInsetsDidChange()UIViewController.viewSafeAreaInsetsDidChange()
這個iOS的safe Area涉及到的第三方庫有mansory和IQkeyboard所以可能這兩個庫也會進行一些適配
11.UIToolbar and UINavigationBar— Layout
在 iOS 11 中,當蘋果進行所有這些新特性時阿迈,也進行了其他的優(yōu)化元媚,針對 UIToolbar 和 UINavigaBar 做了新的自動布局擴展支持,自定義的bar button items苗沧、自定義的title都可以通過layout來表示尺寸刊棕。 需要注意的是,你的constraints需要在view內部設置待逞,所以如果你有一個自定義的標題視圖甥角,你需要確保任何約束只依賴于標題視圖及其任何子視圖。當你使用自動布局识樱,系統(tǒng)假設你知道你在做什么嗤无。
- 管理margins 和 insets
基于約束的Auto Layout,使我們搭建能夠動態(tài)響應內部和外部變化的用戶界面怜庸。Auto Layout為每一個view都定義了margin当犯。margin指的是控件顯示內容部分的邊緣和控件邊緣的距離。 可以用layoutMargins或者layoutMarginsGuide屬性獲得view的margin,margin是視圖內部的一部分休雌。layoutMargins允許獲取或者設置UIEdgeInsets結構的margin灶壶。layoutMarginsGuide則獲取到只讀的UILayoutGuide對象。
參考鏈接:
http://www.reibang.com/p/2ca9ecdb07ce
iOS12新特性:
http://www.reibang.com/p/fd1f656dffce