xcode8 ios10 新特性使用總結(jié)

好多人都更新了Xcode8 那么隨之而來的就是Xcode8的一些變化以及使用時(shí)的一些注意事項(xiàng)了,我用了一段時(shí)間,做了一些總結(jié)現(xiàn)在分享給大家。

xcode8 使用總結(jié):

1、新建工程:在Xcode 創(chuàng)建項(xiàng)目的時(shí)候新增了iMessage 信息應(yīng)用程序 和 sticker 表情包應(yīng)用程序,并且將開發(fā)者賬號的管理提到 創(chuàng)建項(xiàng)目參數(shù)配置中

1.內(nèi)置表情包(Sticker Packs)

可以通過在Xcode中新建Sticker Pack Application來創(chuàng)建。這種方式可以簡單地通過添加圖片來在iMessage中添加表情包。添加的貼紙需要滿足一下條件圖片類型必須是 png、apng、gif或者jpeg

文件大小必須 小于500K

具體如何實(shí)現(xiàn)可以查看這篇文章:http://codecloud.net/13065.html

2.iMessage應(yīng)用(沒有具體研究過怎么用)

iMessage app使用完整的框架和Message app進(jìn)行交互。使用iMessage app能夠在消息應(yīng)用內(nèi)呈現(xiàn)一個(gè)自定義的用戶交互界面。 使用MSMessagesAppViewController創(chuàng)建一個(gè)自定義或者動態(tài)的表情包瀏覽器。使用 MSStickerBrowserViewController添加文本、表情、或者媒體文件到消息應(yīng)用的文本輸入框。使用 MSConversation創(chuàng)建帶有特定的應(yīng)用數(shù)據(jù)交互的消息。使用 MSMessage更新可以相互影響的消息(例如,創(chuàng)建游戲或者可以合作的應(yīng)用)。

2、在Xcode general 配置中有比較大的變化

3、Xcode8重新設(shè)計(jì)了Interface Builder 的畫布,不再有以前的大方框了,取而代之的是選擇不同設(shè)備,你可以在不同設(shè)備之間快速切換并看到一個(gè)完全實(shí)時(shí)的應(yīng)用程序界面預(yù)覽

在底部設(shè)備欄(暫且這么叫)右邊你會看到一個(gè) Vary for Traits按鈕 點(diǎn)開之后你可以選擇寬度和高度,當(dāng)選中Width的時(shí)候左側(cè)會列出所有需要適配的屏幕類型,包括分屏,豎屏和橫屏.這樣你就會很容易的知道我的界面需要適配的所有寬度類型.

同理:當(dāng)選中Height的時(shí)候左側(cè)會列出所有需要適配的屏幕類型,包括分屏,豎屏和橫屏.這樣你就會很容易的知道我的界面需要適配的所有高度類型.

4、關(guān)于Interface Builder版本問題

當(dāng)用Xcode8打開之前創(chuàng)建的項(xiàng)目的xib的時(shí)候回跳出讓你選擇設(shè)備的界面,如果你選擇了那么再用Xcode8以下的版本就打不開了,也就是說Xcode7、Xcode6等等都無法使用。情況如下

Xcode7、Xcode6等等再次打開xib就會報(bào)錯(cuò)

怎么解決呢,一種方法就是我們打開Xcode8的時(shí)候選擇cancel

如果不小心已經(jīng)選擇了choose怎么辦呢,別急,我們用另外一種方法,另一種方法可以選中xib右擊選擇Open As ->Source Code 然后在xml文件中你會看到這句話

只需要將這句話刪除就可以了

5、控制臺輸出Log問題

Xcode8會在控制臺打印一些額外信息(猜想是個(gè)BUG),如果這樣的話就太影響開發(fā)調(diào)試了,不過我們也可以關(guān)閉,但是關(guān)閉的話真機(jī)測試又沒有信息打印了,而且每一個(gè)項(xiàng)目我們都得這樣配置,所以這是一個(gè)很蛋疼的問題。但是沒辦法,目前還沒有找到好的解決辦法,有的人可能出現(xiàn)配置了但是還是輸出這些亂七八糟的信息,這樣我們就得多試幾遍了,確實(shí)沒有辦法,但是現(xiàn)在升級到xcode8.1版本的話蘋果就已經(jīng)解決了這個(gè)bug了.

如何配置呢:

1、快捷鍵 cmd + shift +, 或者使用下面的方法

2、選擇完或者執(zhí)行快捷鍵會出現(xiàn)下面的窗口,做如下配置OS_ACTIVITY_MODE -> Disable

6、添加注釋

雖然Xcode8禁用了所有的插件,如果想繼續(xù)使用插件請參考這篇文章:http://www.lxweimin.com/p/86dcccaec4c3/comments/4283432 ,不過Xcode8也內(nèi)部集成了一些插件使用,比如添加說明(注釋): Option + CMD + /,不過會遇到不啟動的情況

解決方案:

打開終端,命令運(yùn)行: sudo /usr/libexec/xpccachectl

然后必須重啟電腦就大功告成了

如果這里是灰色的 說明你的添加注釋功能被禁用了

7、ios10 隱私權(quán)限設(shè)置

iOS 10 開始對隱私權(quán)限更加嚴(yán)格,如果你不設(shè)置就會直接崩潰,現(xiàn)在很多遇到崩潰問題了,一般解決辦法都是在info.plist文件添加對應(yīng)的Key-Value就可以了。

? 麥克風(fēng)權(quán)限:Privacy - Microphone Usage Description 是否允許此App使用你的麥克風(fēng)?

? 相機(jī)權(quán)限: Privacy - Camera Usage Description 是否允許此App使用你的相機(jī)?

? 相冊權(quán)限: Privacy - Photo Library Usage Description 是否允許此App訪問你的媒體資料庫?

? 通訊錄權(quán)限: Privacy - Contacts Usage Description 是否允許此App訪問你的通訊錄?

? 藍(lán)牙權(quán)限:Privacy - Bluetooth Peripheral Usage Description 是否許允此App使用藍(lán)牙?

? 語音轉(zhuǎn)文字權(quán)限:Privacy - Speech Recognition Usage Description 是否允許此App使用語音識別?

? 日歷權(quán)限:Privacy - Calendars Usage Description

? 定位權(quán)限:Privacy - Location When In Use Usage Description

? 定位權(quán)限: Privacy - Location Always Usage Description

? 位置權(quán)限:Privacy - Location Usage Description

? 媒體庫權(quán)限:Privacy - Media Library Usage Description

? 健康分享權(quán)限:Privacy - Health Share Usage Description

? 健康更新權(quán)限:Privacy - Health Update Usage Description

? 運(yùn)動使用權(quán)限:Privacy - Motion Usage Description

? 音樂權(quán)限:Privacy - Music Usage Description

? 提醒使用權(quán)限:Privacy - Reminders Usage Description

? Siri使用權(quán)限:Privacy - Siri Usage Description

? 電視供應(yīng)商使用權(quán)限:Privacy - TV Provider Usage Description

? 視頻用戶賬號使用權(quán)限:Privacy - Video Subscriber Account Usage Description

如果配置這些不起作用的話就需要打開后臺權(quán)限,拿定位來說的話如下圖

8、推送問題

如果大家要使用推送請將這個(gè)打開,不然會出現(xiàn)問題的

9、iOS9 中默認(rèn)非HTTPS的協(xié)議是被禁止的,解決方案是我們可以在info.plist文件中添加AppTransportSecuritySettings字典,將NSAllowsArbitraryLoads設(shè)置為YES來禁用ATS。

iOS10?從2017年1月1日起蘋果提出所有新提交的App默認(rèn)不允許使用NSAllowsArbitraryLoads來繞過ATS的限制,也就是說強(qiáng)制我們用HTTPS,如果不這樣的話提交App可能會被拒絕。

解決方案:我們可以通過NSExceptionDomains設(shè)置白名單的方式來針對特定的域名開放HTTP內(nèi)容來通過審核。可以簡單理解成,把不支持https協(xié)議的接口設(shè)置成http的接口。

操作:

1)在項(xiàng)目info.plist中添加一個(gè)Key:App Transport Security Settings,類型為

Dictionary;

2)在其內(nèi)添加一個(gè)Key: Exception Domains,類型為Dictionary;

3)在Exception Domains內(nèi)添加要支持的域,其中域作為Key,類型為Dictionary;

4)每個(gè)域下面需要設(shè)置3個(gè)屬性:類型為Boolean;

NSIncludesSubdomains ?YES

NSExceptionRequiresForwardSecrecy ?NO

NSExceptionAllowsInsecureHTTPLoads ?YES

注意:每個(gè)需添加的域都需要設(shè)置此三個(gè)屬性。如果請求的網(wǎng)絡(luò)圖片是HTTP,也是需要設(shè)置的圖片的域。

10、系統(tǒng)判斷方法失效

在你的項(xiàng)目中,當(dāng)需要判斷系統(tǒng)版本的話,不要使用下面的方法:

#define isiOS10 ([[[[UIDevice currentDevice] systemVersion] substringToIndex:1] intValue]>=10)

它會永遠(yuǎn)返回NO,substringToIndex:1

在iOS 10 會被檢測成 iOS 1了,應(yīng)該使用下面的這些方法:Objective-C 中這樣寫:

#define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame)

#define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending)

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)

#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending)

Swift中這樣寫:

if NSProcessInfo().isOperatingSystemAtLeastVersion(NSOperatingSystemVersion(majorVersion: 10, minorVersion: 0, patchVersion: 0)) { // 代碼塊}

11、蘋果針對內(nèi)存也做了優(yōu)化,Xcode8新增Runtime調(diào)試,界面可以展示運(yùn)行時(shí)的問題,改善的界面調(diào)試對于調(diào)試不清晰或者不滿意的布局變的更簡單,我們可以利用debug模式下的Runtime來查看內(nèi)存,具體如何實(shí)現(xiàn)我也沒有做過實(shí)驗(yàn),可以參考一下這篇文章http://url.cn/40SBiZq

12、Swift3.0 and Swift2.3 隨意切換

Xcode8支持3.0語法和2.3語法隨意切換,默認(rèn)創(chuàng)建出來是3.0語法, 如果想用2.3語法是可以切換的

語法轉(zhuǎn)換

當(dāng)然Swift只能向上兼容,不能向下兼容,如果你的語法是2.3的可以轉(zhuǎn)換為3.0的,但是轉(zhuǎn)換不一定成功

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,739評論 6 534
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,634評論 3 419
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,653評論 0 377
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,063評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,835評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,235評論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,315評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,459評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,000評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,819評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,004評論 1 370
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,560評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,257評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,676評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,937評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,717評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,003評論 2 374

推薦閱讀更多精彩內(nèi)容