隨著最近iOS 10的推出,不少蘋果使用者都開始更新到iOS10來體驗(yàn)一把滴劲,針對(duì)新版本的API有很多改動(dòng)的地方,下面將會(huì)對(duì)一些改動(dòng)進(jìn)行總結(jié):
1.通知(Notification)
Notification一直都是蘋果喜歡更改的一個(gè)點(diǎn),不過之前都是很小的改動(dòng)暑椰,iOS10對(duì)其進(jìn)行了大的重構(gòu),改動(dòng)相當(dāng)?shù)拇蠹鼍W儎?dòng)之后更加容易使用一汽,功能也變得更加的強(qiáng)大。
iOS 9以前的通知
1.在調(diào)用方法時(shí)低滩,有些方法讓人很難區(qū)分召夹,容易寫錯(cuò)方法,這讓開發(fā)者有時(shí)候很苦惱恕沫。
2.應(yīng)用在運(yùn)行時(shí)和非運(yùn)行時(shí)捕獲通知的路徑還不一致监憎。
3.應(yīng)用在前臺(tái)時(shí),是無法直接顯示遠(yuǎn)程通知婶溯,還需要進(jìn)一步處理鲸阔。
4.已經(jīng)發(fā)出的通知是不能更新的偷霉,內(nèi)容發(fā)出時(shí)是不能改變的,并且只有簡(jiǎn)單文本展示方式隶债,擴(kuò)展性根本不是很好腾它。
iOS 10的通知
1.所有相關(guān)通知被統(tǒng)一到了UserNotifications.framework框架中。
2.增加了撤銷死讹、更新瞒滴、中途還可以修改通知的內(nèi)容。
3.通知不在是簡(jiǎn)單的文本了赞警,可以加入視頻妓忍、圖片,自定義通知的展示等等愧旦。
4.iOS 10相對(duì)之前的通知來說更加好用易于管理世剖,并且進(jìn)行了大規(guī)模優(yōu)化,對(duì)于開發(fā)者來說是一件好事笤虫。
5.iOS
10開始對(duì)于權(quán)限問題進(jìn)行了優(yōu)化旁瘫,申請(qǐng)權(quán)限就比較簡(jiǎn)單了(本地與遠(yuǎn)程通知集成在一個(gè)方法中)。
2.ATS的問題
iOS 9中默認(rèn)非HTTPS的網(wǎng)絡(luò)是被禁止的琼蚯,當(dāng)然我們也可以把NSAllowsArbitraryLoads設(shè)置為YES禁用ATS酬凳。不過iOS 10從2017年1月1日起蘋果不允許我們通過這個(gè)方法跳過ATS,也就是說強(qiáng)制我們用HTTPS遭庶,如果不這樣的話提交App可能會(huì)被拒絕宁仔。但是我們可以通過NSExceptionDomains來針對(duì)特定的域名開放HTTP可以容易通過審核。
3.iOS權(quán)限設(shè)置問題
iOS 10開始對(duì)隱私權(quán)限更加嚴(yán)格(以前只需要對(duì)位置進(jìn)行配置就ok)峦睡,如果你不設(shè)置就會(huì)直接崩潰翎苫,現(xiàn)在很多遇到崩潰問題了,一般解決辦法都是在info.plist文件添加對(duì)應(yīng)的Key-Value就可以了榨了。
以上Value值煎谍,圈出的紅線部分的文字是展示給用戶看的,需要自己添加規(guī)范的提示說明龙屉,不能為空粱快。
4.Xcode 8運(yùn)行一堆沒用的logs解決辦法
上圖我們看到,自己新建的一個(gè)工程啥也沒干就打印一堆爛七八糟的東西叔扼,我覺得這個(gè)應(yīng)該是Xcode 8的問題,具體也沒細(xì)研究漫雷,解決辦法是設(shè)置OS_ACTIVITY_MODE :disable如下圖:
5.iOS 10 UIStatusBar方法過期:
在我們開發(fā)中有可能用到UIStatusBar一些屬性瓜富,在iOS 10中這些方法已經(jīng)過期了,如果你的項(xiàng)目中有用的話就得需要適配降盹。上面的圖片也能發(fā)現(xiàn)与柑,如果在iOS 10中你需要使用preferredStatusBar比如這樣:
//iOS10
- (UIStatusBarStyle)preferredStatusBarStyle{
returnUIStatusBarStyleDefault;
}
6.iOS 10 UICollectionView性能優(yōu)化
隨著開發(fā)者對(duì)UICollectionView的信賴,項(xiàng)目中用的地方也比較多,但是還是存在一些問題价捧,比如有時(shí)會(huì)卡頓丑念、加載慢等。所以iOS 10對(duì)UICollectionView進(jìn)一步的優(yōu)化结蟋,因?yàn)閿⑹銎饋肀容^復(fù)雜耗費(fèi)時(shí)間脯倚,在這里只提供學(xué)習(xí)參考文章如下:
UICollectionView新特性
7.iOS 10 UIColor新增方法
因?yàn)橹拔覀兌际怯肦GB來設(shè)置顏色,反正用起來也不是特別多樣化嵌屎,這次新增的方法應(yīng)該就是一個(gè)彌補(bǔ)吧推正。所以在iOS
10蘋果官方建議我們使用sRGB,因?yàn)樗阅芨帽Χ瑁矢S富植榕。如果你自己為UIColor寫了一套分類的話也可嘗試替換為sRGB,UIColor類中新增了兩個(gè)Api如下:
+ (UIColor*)colorWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)greenblue:(CGFloat)blue alpha:(CGFloat)alpha NS_AVAILABLE_IOS(10_0);
- (UIColor*)initWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)green blue:(CGFloat)bluealpha:(CGFloat)alpha NS_AVAILABLE_IOS(10_0);
8.iOS 10 UITextContentType
// The textContentType property is to
provide the keyboard with extra information about the semantic intent of the
text document.
@property(nonatomic,copy) UITextContentType textContentTypeNS_AVAILABLE_IOS(10_0); // default is nil
在iOS 10 UITextField添加了textContentType枚舉尼夺,指示文本輸入?yún)^(qū)域所期望的語義意義尊残。
使用此屬性可以給鍵盤和系統(tǒng)信息,關(guān)于用戶輸入的內(nèi)容的預(yù)期的語義意義淤堵。例如寝衫,您可以指定一個(gè)文本字段,用戶填寫收到一封電子郵件確認(rèn)uitextcontenttypeemailaddress粘勒。當(dāng)您提供有關(guān)您期望用戶在文本輸入?yún)^(qū)域中輸入的內(nèi)容的信息時(shí)竞端,系統(tǒng)可以在某些情況下自動(dòng)選擇適當(dāng)?shù)逆I盤,并提高鍵盤修正和主動(dòng)與其他文本輸入機(jī)會(huì)的整合
9.iOS 10字體隨著手機(jī)系統(tǒng)字體而改變
當(dāng)我們手機(jī)系統(tǒng)字體改變了之后庙睡,那我們App的label也會(huì)跟著一起變化事富,這需要我們寫很多代碼來進(jìn)一步處理才能實(shí)現(xiàn),但是iOS 10提供了這樣的屬性adjustsFontForContentSizeCategory來設(shè)置乘陪。
10.10 UIScrollView新增refreshControl
iOS10以后只要是繼承UIScrollView那么就支持刷新功能:
@property(nonatomic,strong,
nullable)UIRefreshControl*refreshControlNS_AVAILABLE_IOS(10_0)
__TVOS_PROHIBITED;
11.iOS 10判斷系統(tǒng)版本正確姿勢(shì)
判斷系統(tǒng)版本是我們經(jīng)常用到的统台,尤其是現(xiàn)在大家都有可能需要適配iOS
10,那么問題就出現(xiàn)了啡邑,如下圖:
[[UIDevice currentDevice]
systemVersion].floatValue這個(gè)方法也是不靠譜的贱勃,好像在8.3版本輸出的值是8.2,記不清楚了反正是不靠譜的谤逼,所以建議大家用[[UIDevice currentDevice] systemVersion]這個(gè)方法贵扰!
12.Xcode 8插件不能用的問題
大家都升級(jí)了Xcode 8,但是對(duì)于插件依賴的開發(fā)者們流部,一邊哭著一邊去網(wǎng)上尋找解決辦法戚绕。那么下面是解決辦法:讓你的Xcode8繼續(xù)使用插件,但是看到文章最后的解釋枝冀,我們知道如果用插件的話舞丛,可能安全上會(huì)有問題耘子、并且提交審核會(huì)被拒絕,所以建議大家還是不要用了球切,解決辦法總是有的谷誓,比如在Xcode中添加注釋的代碼塊也是很方便的。
13.iOS 10開始項(xiàng)目中有的文字顯示不全問題
Xcode8和Xcode 7.3分別測(cè)試了下吨凑,如下圖:
創(chuàng)建一個(gè)Label然后讓它自適應(yīng)大小捍歪,字體大小都是17最后輸出的寬度是不一樣的,我們?cè)倏匆幌禄持瑁旅娴臄?shù)據(jù)就知道為什么升級(jí)iOS 10之后App中有的文字顯示不全了:
英文字母會(huì)不會(huì)也有這種問題费封?通過測(cè)試,后來發(fā)現(xiàn)英文字母沒有問題蒋伦,只有漢字有問題弓摘。目前只有一個(gè)一個(gè)修改控件解決這個(gè)問題,暫時(shí)沒有其他好辦法來解決痕届。
都是搜集別的大神的東西,一塊學(xué)習(xí)成長(zhǎng)
繼續(xù)更新中………