開(kāi)發(fā)者必知的各iOS系統(tǒng)版本特性

本文僅從iOS7開(kāi)始介紹,iOS7才是iOS開(kāi)發(fā)者全面發(fā)揮自己創(chuàng)造力的真正起點(diǎn)

iOS7

UI

  • 擬物化的界面風(fēng)格
    • 狀態(tài)欄样傍,導(dǎo)航欄和應(yīng)用實(shí)際展示內(nèi)容不再界限:系統(tǒng)自帶的應(yīng)用都不再區(qū)分狀態(tài)欄和navigation bar调煎,而是用統(tǒng)一的顏色力求簡(jiǎn)潔;
    • 程序打開(kāi)加入了動(dòng)畫(huà):從主界面到圖標(biāo)所在位置的一個(gè)放大镜遣,同時(shí)顯示應(yīng)用的載入界面;
  • 新增了UIDynamicItem委托,用來(lái)為UIView制定力學(xué)模型行為;
  • 引入了Sprite Kit Framework士袄,用于硬件加速的動(dòng)畫(huà)系統(tǒng)來(lái)表現(xiàn)2D和2.5D的游戲悲关,它提供了制作游戲所需要的大部分的工具,包括圖像渲染娄柳,動(dòng)畫(huà)系統(tǒng)寓辱,聲音播放以及圖像模擬的物理引擎;

多任務(wù)強(qiáng)化

這里有篇多任務(wù)的專(zhuān)題文章

  • 經(jīng)常需要下載新內(nèi)容的應(yīng)用現(xiàn)在可以通過(guò)設(shè)置UIBackgroundModes為fetch來(lái)實(shí)現(xiàn)后臺(tái)下載內(nèi)容了赤拒,需要在AppDelegate里實(shí)現(xiàn)
    setMinimumBackgroundFetchInterval:以及
application:performFetchWithCompletionHandler:

來(lái)處理完成的下載秫筏,這個(gè)為后臺(tái)運(yùn)行代碼提供了又一種選擇。另外需要注意開(kāi)發(fā)者僅只能指定一個(gè)最小間隔挎挖。

  • 同樣是后臺(tái)下載这敬,以前只能推送提醒用戶(hù)進(jìn)入應(yīng)用下載,現(xiàn)在可以接到推送并在后臺(tái)下載蕉朵。UIBackgroundModes設(shè)為remote-notification崔涂,并實(shí)現(xiàn)
application:didReceiveRemoteNotification:fetchCompletionHandler:
  • 為了后臺(tái)下載,開(kāi)發(fā)者必須使用一個(gè)新的類(lèi)NSURLSession墓造,其實(shí)就是在NSURLConnection上加了個(gè)后臺(tái)處理堪伍。

其他

  • 加入AirDrop
  • Inter-App Audio 應(yīng)用間的音頻
  • 點(diǎn)對(duì)點(diǎn)連接 Peer-to-Peer Connectivity
  • Store Kit Framework
    Store Kit在內(nèi)購(gòu)方面采用了新的訂單系統(tǒng),這將可以實(shí)現(xiàn)對(duì)訂單的本機(jī)驗(yàn)證觅闽。這是一次對(duì)應(yīng)內(nèi)購(gòu)破解和有可能驗(yàn)證失敗導(dǎo)致內(nèi)購(gòu)失敗的更新,蘋(píng)果希望藉此減少內(nèi)購(gòu)的實(shí)現(xiàn)流程涮俄,減少出錯(cuò)蛉拙,同時(shí)遏制內(nèi)購(gòu)破解泛濫。前者可能沒(méi)有問(wèn)題彻亲,但是后者的話(huà)孕锄,因?yàn)閛bjc的動(dòng)態(tài)特性,決定了只要有越獄存在苞尝,內(nèi)購(gòu)破解也是早晚的事情畸肆。不過(guò)這一點(diǎn)確實(shí)方便了沒(méi)有能力架設(shè)驗(yàn)證服務(wù)器的小開(kāi)發(fā)者,這方面來(lái)說(shuō)還是很好的宙址。
    原文請(qǐng)戳

iOS8

iOS9

iOS10

提到的功能模塊有:

Proactive Suggestions

Integrating with the Messages App

User Notifications

Speech Recognition

Wide Color

Adapting to the True Tone Display

App Search Enhancements

Widget Enhancements

Security and Privacy Enhancements

還沒(méi)有詳細(xì)探索的模塊是

**SiriKit **

CallKit (工作職能和這里聯(lián)系不多轴脐,還不care這里)

******Apple Pay Enhancements ******(工作職能和這里聯(lián)系不多,還不care這里)************

SiriKit

SiriKit的功能非常強(qiáng)大,支持音頻大咱、視頻恬涧、消息發(fā)送接收、搜索照片碴巾、預(yù)訂行程溯捆、管理鍛煉等等。在用到此服務(wù)時(shí)厦瓢,siri會(huì)發(fā)送Intent對(duì)象提揍,里面包括用戶(hù)的請(qǐng)求和各種數(shù)據(jù),可以對(duì)這個(gè)intent處理選擇適當(dāng)?shù)捻憫?yīng)煮仇。 這個(gè)功能主要是看這兩個(gè)頭文件(#import<Intents/Intents.h>碳锈、#import <IntentsUI/IntentsUI.h>)所涵蓋到的類(lèi)太多,前期先略過(guò)了欺抗,之后等iOS10可以推送更新了再做進(jìn)一步調(diào)研售碳。

Proactive Suggestions 系統(tǒng)預(yù)先建議

背景就是iOS9的時(shí)候系統(tǒng)給予的主動(dòng)建議會(huì)通過(guò):Spolight搜索,Safari搜索绞呈,Handoff贸人,或者siri建議。 在iOS10之后新增了佃声,鍵盤(pán)QuickType建議艺智,地圖,車(chē)載娛樂(lè)圾亏,應(yīng)用切換十拣,siri交互,鎖屏播放志鹃。 比如你正在一個(gè)應(yīng)用里看一個(gè)酒店夭问,可以使用mapitem屬性保存正在查看的這個(gè)酒店的位置,然后你切換旅行或地圖App時(shí)這個(gè)位置可以自動(dòng)提供使用曹铃。 如果你需要這樣利用系統(tǒng)來(lái)共享一個(gè)位置缰趋,那你需要指定這個(gè)位置的經(jīng)緯度,地名,電話(huà)等屬性 來(lái)便于siri的直接調(diào)起陕见。

文檔中還列出了幾種場(chǎng)景

1.在輸入框(UITextFiled)輸入時(shí)秘血,可以指定一下這個(gè)輸入框的類(lèi)型,以便系統(tǒng)可以分析出用戶(hù)的語(yǔ)義评甜。 是電話(huà)類(lèi)型就建議一些電話(huà)灰粮,是地址類(lèi)型就建議一些地址∪炭溃看下頭文件(#import <UIKit/UITextInputTraits.h>)可指定的類(lèi)型 就是這個(gè)新增的textContentType字段粘舟,里面有很多種類(lèi)型可選熔脂。
UIKIT_EXTERN ``NSString *``const UITextContentTypeName ``NS_AVAILABLE_IOS``(10_0);

UIKIT_EXTERN ``NSString *``const UITextContentTypeNamePrefix ``NS_AVAILABLE_IOS``(10_0);

UIKIT_EXTERN ``NSString *``const UITextContentTypeGivenName ``NS_AVAILABLE_IOS``(10_0);

UIKIT_EXTERN ``NSString *``const UITextContentTypeMiddleName ``NS_AVAILABLE_IOS``(10_0);

UIKIT_EXTERN ``NSString *``const UITextContentTypeFamilyName ``NS_AVAILABLE_IOS``(10_0);

UIKIT_EXTERN ``NSString *``const UITextContentTypeNameSuffix ``NS_AVAILABLE_IOS``(10_0);

UIKIT_EXTERN ``NSString *``const UITextContentTypeNickname ``NS_AVAILABLE_IOS``(10_0);

UIKIT_EXTERN ``NSString *``const UITextContentTypeJobTitle ``NS_AVAILABLE_IOS``(10_0);

UIKIT_EXTERN ``NSString *``const UITextContentTypeOrganizationName ``NS_AVAILABLE_IOS``(10_0);

UIKIT_EXTERN ``NSString *``const UITextContentTypeLocation ``NS_AVAILABLE_IOS``(10_0);

UIKIT_EXTERN ``NSString *``const UITextContentTypeFullStreetAddress ``NS_AVAILABLE_IOS``(10_0);

UIKIT_EXTERN ``NSString *``const UITextContentTypeStreetAddressLine1 ``NS_AVAILABLE_IOS``(10_0);

UIKIT_EXTERN ``NSString *``const UITextContentTypeStreetAddressLine2 ``NS_AVAILABLE_IOS``(10_0);

UIKIT_EXTERN ``NSString *``const UITextContentTypeAddressCity ``NS_AVAILABLE_IOS``(10_0);

UIKIT_EXTERN ``NSString *``const UITextContentTypeAddressState ``NS_AVAILABLE_IOS``(10_0);

UIKIT_EXTERN ``NSString *``const UITextContentTypeAddressCityAndState ``NS_AVAILABLE_IOS``(10_0);

UIKIT_EXTERN ``NSString *``const UITextContentTypeSublocality ``NS_AVAILABLE_IOS``(10_0);

UIKIT_EXTERN ``NSString *``const UITextContentTypeCountryName ``NS_AVAILABLE_IOS``(10_0);

UIKIT_EXTERN ``NSString *``const UITextContentTypePostalCode ``NS_AVAILABLE_IOS``(10_0);

UIKIT_EXTERN ``NSString *``const UITextContentTypeTelephoneNumber ``NS_AVAILABLE_IOS``(10_0);

UIKIT_EXTERN ``NSString *``const UITextContentTypeEmailAddress ``NS_AVAILABLE_IOS``(10_0);

UIKIT_EXTERN ``NSString *``const UITextContentTypeURL ``NS_AVAILABLE_IOS``(10_0);

UIKIT_EXTERN ``NSString *``const UITextContentTypeCreditCardNumber ``NS_AVAILABLE_IOS``(10_0);

2.如果是視頻類(lèi)App可以使用MPPlayableContentManager (#import <MediaPlayer/MPPlayableContentManager.h>)看了下,新增了一個(gè)屬性nowPlayingIdentifiers蓖乘,蘋(píng)果的意思應(yīng)該是只要你以前是用這個(gè)多媒體類(lèi)播放音樂(lè)的我就可以讓你在鎖屏頁(yè)面交互锤悄,需要配置在這個(gè)數(shù)組里。

3.如果是出行類(lèi)app可以使用MKDirectionsRequest嘉抒。 (#import <MapKit/MKDirectionsRequest.h> )這個(gè)類(lèi)里幾乎沒(méi)有新增api零聚,iOS10就新增了一個(gè)枚舉,而且看上去就是個(gè)默認(rèn)值些侍。如果要使用此功能隶症,需要配置在info.plist文件里 新增key - value ,MKDirectionsApplicationSupportedModes - MKDirectionsModeRideShare岗宣。

User Notifications 用戶(hù)通知

總體的意思就是支持了很多用戶(hù)定義的通知蚂会,并且可以捕捉到各個(gè)通知狀態(tài)的回調(diào)悍及。以往通知的概念是:大家想接收的都提前做好準(zhǔn)備各吨,然后一下全量分發(fā),沒(méi)收到也不管了痘儡,也不關(guān)心發(fā)送者】龋現(xiàn)在用戶(hù)通知做成了和網(wǎng)絡(luò)請(qǐng)求有點(diǎn)像 一個(gè)先發(fā)request再得到response的流程彪见,甚至封裝了error,可以在各個(gè)狀態(tài)的方法中做一些額外操作娱挨,并且也能取到一些字段余指,如發(fā)送者等。

此功能的頭文件入口在#import <UserNotifications/UserNotifications.h>

1.NSString+UserNotifications.h

有一個(gè)方法 localizedUserNotificationStringForKey: arguments: (提供該通知被呈現(xiàn)時(shí)的本地化字符串)跷坝,猜測(cè)下面的類(lèi)有很多initWithIdentifier的酵镜,他們的indentifier就是這個(gè)。

2.UNError.h

有一個(gè)屬性UNErrorDomain 和一個(gè)枚舉 UNErrorCode柴钻,顧名思義淮韭。

3.UNNotification.h

里面有兩個(gè)屬性,date日期 和 request顿颅,這個(gè)request是上面“8”的類(lèi)型UNNotificationRequest缸濒,點(diǎn)進(jìn)去看了下比較清晰,有identifier標(biāo)識(shí)粱腻,content內(nèi)容,trigger觸發(fā)條件斩跌, 和帶上這三個(gè)東西的初始化方法绍些。 其中內(nèi)容 和 觸發(fā)條件這兩個(gè)屬性,分別是上面“7” 和 “12”的類(lèi)型耀鸦,這個(gè)下面再談柬批。

4.UNNotificationAction.h

這個(gè)類(lèi)突出的是一個(gè)通知的動(dòng)作啸澡,有identifier,title氮帐,options(枚舉嗅虏,就是通知當(dāng)前的權(quán)限,允許上沐?拒絕皮服?前臺(tái)時(shí)允許?)屬性参咙。然后就是帶上這三個(gè)東西的初始化方法龄广。 然后比較費(fèi)解的就是下面有一個(gè)子類(lèi)UNTextInputNotificationAction ,這個(gè)子類(lèi)有兩個(gè)額外屬性蕴侧, 按鈕title择同,和文本框placeholder, 為什么會(huì)是這兩個(gè)屬性净宵? 莫非是點(diǎn)擊通知后下拉出的快速回復(fù)敲才,有一個(gè)輸入框和一個(gè)按鈕。

5.UNNotificationAttachment.h

這個(gè)里面就是URL(資源url屬性)择葡,type(附件類(lèi)型)紧武。 然后是帶上這兩個(gè)屬性的初始化方法。 下面聲明了幾個(gè)字符串常量刁岸,暫時(shí)還不知道具體用在哪里脏里,typeHint,hiddenKey虹曙,clippingRectKey迫横,TimeKey。

6.UNNotificationCategory.h

有indentifier屬性酝碳,actions(里面是數(shù)組)矾踱,minimalActions(最重要的數(shù)組,就是只能給你兩個(gè)位置顯示你顯示哪兩個(gè)疏哗,這么個(gè)意思)呛讲,intentIdentifiers屬性(應(yīng)該是和上面的動(dòng)作數(shù)組關(guān)聯(lián)的吧),options(權(quán)限相關(guān)返奉,無(wú)贝搁?允許自定義關(guān)閉?允許車(chē)載系統(tǒng)交互芽偏?)雷逆。最后就是把這些都帶上的init方法。 猜測(cè)這個(gè)類(lèi)之所以取名叫category應(yīng)該是污尉,在某個(gè)地方展示通知的時(shí)候會(huì)把所有通知一一分類(lèi)膀哲, 然后每個(gè)類(lèi)別的通知可能最多只能讓你展示幾個(gè)往产,如果不做限制應(yīng)該會(huì)展示全部通知,如果權(quán)限設(shè)置的是允許自定義關(guān)閉那可能就是支持類(lèi)似一鍵清除的操作某宪。

7.UNNotificationContent.h

消息的內(nèi)容仿村,一看就能知道應(yīng)該是一個(gè)類(lèi)似于Entity的東西,里面裝有大量的屬性:attachments(可選的附件集合)兴喂,badge(小紅點(diǎn)數(shù)量)蔼囊,body,categoryIndentifier瞻想,launchImageName(從消息里點(diǎn)開(kāi)的應(yīng)用程序應(yīng)該能看到啟動(dòng)圖對(duì)吧)压真,subtitle,threadIdentifier(與request關(guān)聯(lián))蘑险,title滴肿,userInfo,sound這個(gè)是“11”的類(lèi)型佃迄,應(yīng)該是同時(shí)來(lái)時(shí)的聲音泼差,點(diǎn)開(kāi)“11”看一下 ,就倆方法呵俏,defaultSound堆缘,soundNamed: 自定義聲音,都在~/Library/Sounds 目錄下普碎。 恩再回到剛才那個(gè)content類(lèi)里面有個(gè)子類(lèi)UNMutableNotificationContent吼肥,屬性和父類(lèi)相同,只不過(guò)是子類(lèi)的屬性都可以修改了麻车,父類(lèi)的那些屬性都是readonly的缀皱。

8.UNNotificationRequest.h 上面第3條說(shuō)過(guò)了

9.UNNotificationResponse.h

有action,也有request动猬,那也就有response啤斗,這里面有兩個(gè)屬性,notification赁咙,actionIdentifier 響應(yīng)里就這倆破玩意钮莲。 然后有個(gè)子類(lèi)UNTextInputNotificationResponse, 這里面就一個(gè)屬性u(píng)serText 彼水,看命名很好猜崔拥,應(yīng)該就是前面說(shuō)的那個(gè)有輸入框里輸入的內(nèi)容。

10.UNNotificationSettings.h

這個(gè)類(lèi)里就是一些設(shè)置了凤覆,有一個(gè)枚舉說(shuō)的是有沒(méi)有權(quán)限握童,一個(gè)枚舉說(shuō)的是不支持?禁用叛赚?啟用澡绩?。 然后下面一大波屬性俺附,小紅點(diǎn)設(shè)置肥卡,聲音設(shè)置,彈窗設(shè)置等等 都是這個(gè)枚舉類(lèi)型事镣, 最后還有個(gè)alertStyle屬性(枚舉步鉴,None?Banner璃哟?alert氛琢?)。

11.sound前面第7條說(shuō)過(guò)了

12.UNNotificationTrigger.h

有一個(gè)屬性 repeats(是否重復(fù)發(fā)通知)随闪。 下面有四個(gè)子類(lèi)阳似,push通知觸發(fā), 時(shí)間通知觸發(fā)铐伴,日歷通知觸發(fā)撮奏,地區(qū)通知觸發(fā), 時(shí)間的有timeInterval屬性当宴, 日歷的有dateComponents屬性畜吊。 然后時(shí)間和日歷的子類(lèi)都有nextTriggerDate 方法。

13.UNUserNotificationCenter.h

這里面東西多到吐了户矢,同學(xué)你記得NSNotificationCenter么玲献? 需要提一點(diǎn)的就是以前的通知中心有個(gè)方法[NSNotificationCenter defaultCenter], 這里是[UNUserNotificationCenter currentNotificationCenter]梯浪, 提醒一下到時(shí)候別說(shuō)敲不出來(lái)捌年。 方法大多是一些remove,add驱证,get等操作延窜, 還有2個(gè)代理方法:通知將要發(fā)出去時(shí)調(diào)用,收到通知的response后調(diào)用抹锄。

14.UNNotificationServiceExtension.h

里面有兩個(gè)方法逆瑞,收到通知的請(qǐng)求后調(diào)用, 系統(tǒng)將要銷(xiāo)毀時(shí)調(diào)用伙单。

通知里面有UI相關(guān)的類(lèi) #import <UserNotificationsUI/UserNotificationsUI.h>

這個(gè)類(lèi)里面就一個(gè)文件获高, 而且方法比較單一,就是收到通知調(diào)用吻育,和收到通知的響應(yīng)調(diào)用念秧。 其他方法也就是mediaPlay 和 mediaPause 。和一些多媒體播放的按鈕frame布疼,color等摊趾, 這里面的作用難道僅僅就是通知來(lái)了后播放的音樂(lè)暫時(shí)暫停下币狠,響一聲通知,再播放砾层? 具體WWDC2016上說(shuō)的鎖屏頁(yè)面的通知樣式處理的api是在下面的部件增強(qiáng)章節(jié)中漩绵。

Integrating with the Messages App 與系統(tǒng)短信 app交互

對(duì)消息額支持很大,可以模擬發(fā)消息收消息肛炮,發(fā)郵件等止吐,提供了UI界面。 也提供了一些額外擴(kuò)展的api侨糟,如表情包區(qū)域碍扔。WWDC2016上說(shuō)的各種消息內(nèi)的新操作在頭文件中都能找到Api。

此功能的頭文件入口在#import <Messages/Messages.h>

1.MSMessagesAppViewController.h

這個(gè)類(lèi)應(yīng)該就是蘋(píng)果自己的消息界面秕重,你可以繼承他寫(xiě)你自己自定義的界面不同。 屬性有:activeConversation 指的是當(dāng)前的會(huì)話(huà)對(duì)象,是上面“2”這個(gè)類(lèi)型悲幅,具體詳細(xì)可以看下面的第“2”點(diǎn)套鹅、還有個(gè)是presentationStyle(外觀樣式,枚舉類(lèi)型汰具,緊縮卓鹿?擴(kuò)張?)留荔。 接下來(lái)就是方法了:requestPresentationStyle(請(qǐng)求消息過(guò)渡到指定的樣式)吟孙,dismiss消除方法。 然后就是一波生命周期方法了聚蝶,每一類(lèi)都有will和did杰妓,會(huì)話(huà)信息將要(已經(jīng))活躍時(shí),將要(已經(jīng))解除活躍碘勉,將要(已經(jīng))選擇信息巷挥,將要(已經(jīng))收到信息,將要(已經(jīng))開(kāi)始發(fā)送验靡,將要(已經(jīng))取消發(fā)送倍宾,將要(已經(jīng))開(kāi)始過(guò)渡。

2.MSConversation.h

屬性有l(wèi)ocalParticipantIdentifier(當(dāng)前會(huì)話(huà)參與者生成的標(biāo)識(shí)胜嗓,他說(shuō)只有刪了App才會(huì)變 姑且理解成id是不會(huì)變的)高职,remoteParticipantIdentifiers(遠(yuǎn)端的標(biāo)識(shí)符數(shù)組),selectedMessage(選中的信息)辞州,以及4個(gè)對(duì)象方法 插入一條信息怔锌,插入一個(gè)標(biāo)簽,插入一段文本,插入一個(gè)附件埃元。 這四個(gè)方法都有成功的回調(diào)涝涤。

3.MSSession.h

這個(gè)類(lèi)里面是空的,解釋說(shuō)是用session來(lái)處理消息序列間的關(guān)系亚情⊥荆可能就是占個(gè)位,以后估計(jì)會(huì)添加?xùn)|西楞件。 這個(gè)MSSession是后面很多參數(shù)的類(lèi)型,應(yīng)該就是區(qū)分消息類(lèi)似于標(biāo)識(shí)符的作用裳瘪。

4.MSMessage.h

初始化方法是initWithSession 土浸,沒(méi)錯(cuò)就是上面那個(gè)MSSession。 除了初始化方法剩下的就全是屬性了:session彭羹,senderParticipantIdentifier(發(fā)送者的標(biāo)識(shí)符)黄伊,layout布局這個(gè)是“5”這個(gè)類(lèi)型,URL派殷,shouldExpire(選yes會(huì)自動(dòng)消失还最,用戶(hù)手動(dòng)選擇為這條消息續(xù)命),accessibilityLabel(殘疾人模式支持)毡惜,error拓轻。

5.MSMessageLayout.h

這個(gè)是抽象類(lèi),里面是空的经伙,就是個(gè)布局文件扶叉,繼承自NSObject。

6.MSMessageTemplateLayout.h

繼承上面那個(gè)類(lèi)帕膜,看名字是模板布局后面應(yīng)該會(huì)用的挺多的枣氧,里面的屬性有,標(biāo)題垮刹,子標(biāo)題达吞,尾部標(biāo)題,尾部子標(biāo)題荒典,圖片酪劫,多媒體URL,圖片標(biāo)題种蝶,圖片子標(biāo)題契耿。

7.MSSticker.h

應(yīng)該是消息上的表情包。 里面就有兩個(gè)屬性imageFileURL 螃征,localizedDescription 圖片和局部描述搪桂。然后是帶上這兩個(gè)屬性的初始化方法 initWithContentsOfFileURL: localizedDescription: 。

8.MSStickerView.h

這個(gè)類(lèi)就是一個(gè)view,里面包著一個(gè)sticker踢械,也就是包裹著上面那個(gè)裝飾品的view酗电。 提供了帶上sticker的初始化方法,一個(gè)常規(guī)屬性animationDuration内列,和三個(gè)方法startAnimating撵术,stopAnimating,isAnimating话瞧。

9.MSStickerBrowserViewDataSource.h

細(xì)思極恐嫩与,這個(gè)類(lèi)不就是wwdc2016上說(shuō)的那個(gè)可以在消息下面添加自定義表情的地方么。 符合datasource的風(fēng)格交排,里面就兩個(gè)方法划滋,numberOfStickersInStickerBrowserView: (返回一個(gè)總數(shù)),stickerBrowserView:stickerAtIndex:(返回這個(gè)索引下的內(nèi)容)埃篓。

10.MSStickerBrowserView.h

上面那個(gè)是datasource处坪,那這個(gè)就是用了上面數(shù)據(jù)源的view唄。 除了初始化方法架专,有兩個(gè)屬性 stickerSize(枚舉同窘,小,中部脚,大)想邦,dataSource(就是上面的“9”),還有個(gè)人reloadData方法睛低。

11.MSStickerBrowserViewController.h

上面是個(gè)view案狠, 這個(gè)就是承載上面那個(gè)view的viewcontroller∏祝肯定得有這個(gè)屬性stickerBrowserView 和初始化方法骂铁。

這個(gè)message模塊還有UI相關(guān)的api #import <MessageUI/MessageUI.h>

就是兩個(gè)VC ,MFMailComposeViewController,MFMessageComposeViewController。 這兩個(gè)都是繼承自UINavigationController. 覺(jué)得這兩個(gè)就是發(fā)郵件的編輯頁(yè)面罩抗,和發(fā)消息的編輯頁(yè)面拉庵。 發(fā)郵件的頁(yè)面里有 canSendMail (Bool方法),set主題套蒂,set發(fā)件人钞支,set收件人,set內(nèi)容操刀,set附件烁挟。 然后有一個(gè)代理,和代理方法骨坑,猜也能猜到 就是成功失敗回調(diào)撼嗓。mailComposeController:didFinishWithResult: error: 柬采。 那另一個(gè)消息和這差不多了就不說(shuō)了。

Speech Recognition 語(yǔ)音識(shí)別轉(zhuǎn)文字

這個(gè)類(lèi)里面的Api和方法調(diào)用都非常清晰且警,感覺(jué)使用起來(lái)會(huì)非常方便粉捻。真的為科大訊飛捏把汗了,科大訊飛的app(錄音寶)我看過(guò)斑芜,都還沒(méi)有說(shuō)一段語(yǔ)音能直接轉(zhuǎn)文字的功能肩刃,他們是直接把聲音文件上傳,然后24小時(shí)候再發(fā)給你轉(zhuǎn)換后的結(jié)果...而且一上來(lái)就要收費(fèi)杏头。蘋(píng)果的這個(gè)功能已經(jīng)做到了系統(tǒng)原生支持盈包,真的厲害。

此功能的頭文件入口在#import <Speech/Speech.h>

1.SFSpeechRecognitionResult.h

這個(gè)類(lèi)里有三個(gè)屬性:bestTranscription 就是最優(yōu)的轉(zhuǎn)化結(jié)果咯大州,是上面的“7”這個(gè)類(lèi)型的续语。然后再看下這個(gè)SFTranscription.h ,果然不出所料 有兩個(gè)屬性 一個(gè)是字符串類(lèi)型formattedString 一個(gè)是數(shù)組類(lèi)型的segments 厦画,恩 前者就是轉(zhuǎn)化后的字符串,后者是分割后的一個(gè)個(gè)小結(jié)果集合滥朱。 然后這個(gè)分割的一個(gè)個(gè)小結(jié)果呢又是上面“6”這個(gè)類(lèi)型根暑。那再看一下“6” 里面的屬性就是 substring, 時(shí)間戳徙邻,duration排嫌,準(zhǔn)確性,備選答案數(shù)組缰犁,這些很清晰的東西了淳地。

2.SFSpeechRecognitionRequest.h

這個(gè)類(lèi)里東西有點(diǎn)多,屬性taskHint帅容,是上面“4”這個(gè)類(lèi)型颇象,點(diǎn)開(kāi)一看就是一個(gè)枚舉,用來(lái)區(qū)分你這個(gè)語(yǔ)音識(shí)別的請(qǐng)求是哪一類(lèi)的 查找并徘?確認(rèn)遣钳?聽(tīng)寫(xiě)?無(wú)法識(shí)別麦乞?蕴茴。 接下來(lái)是兩個(gè)BOOL類(lèi)型的,shouldReportPartialResults(是否語(yǔ)音局部的一塊一塊也要處理姐直?默認(rèn)選false就是一句話(huà)全說(shuō)完了再上傳吧)倦淀,detectMultipleUtterances(假如你說(shuō)了10秒鐘,只有后5秒匹配到了結(jié)果声畏,那你前面刪了還是保留撞叽?默認(rèn)不刪),然后是分析到的關(guān)鍵字?jǐn)?shù)組,和標(biāo)識(shí)符什么的能扒。 然后這個(gè)request有兩個(gè)子類(lèi)佣渴,一個(gè)是從本地URL讀取 一個(gè)聲音文件去識(shí)別, 一個(gè)是默認(rèn)做法用話(huà)筒和AVFoundation庫(kù)接收到聲音去識(shí)別初斑,然后有幾個(gè)拼接聲音的API辛润。

3.SFSpeechRecognitionTask.h

從名字就能看出來(lái)這是語(yǔ)音識(shí)別最重要的一個(gè)類(lèi)了,里面的屬性有:state這是一個(gè)枚舉见秤,說(shuō)明當(dāng)前狀態(tài)是進(jìn)行中砂竖?已完成?被取消鹃答?等等乎澄。 接下來(lái)是三個(gè)常見(jiàn)的 isFinishing ,isCancelled 测摔,error 置济。 接下來(lái)是 isPowerAvailable (是否開(kāi)啟說(shuō)話(huà)聲音大小的監(jiān)測(cè)?)锋八,peakPower(最大聲音)浙于,averagePower(平均聲音)。 屬性就這些了挟纱,接下來(lái)就是一個(gè)協(xié)議和一波代理方法:剛剛識(shí)別出話(huà)語(yǔ)調(diào)用羞酗,猜測(cè)話(huà)語(yǔ)時(shí)調(diào)用,話(huà)說(shuō)完了調(diào)用紊服,取消時(shí)調(diào)用檀轨,等等等,你能想到的回調(diào)方法蘋(píng)果應(yīng)該都有的欺嗤。

4.上面第2條里面說(shuō)過(guò)了

5.SFSpeechRecognizer.h

和系統(tǒng)的那些相機(jī)權(quán)限参萄,通訊錄權(quán)限有點(diǎn)像, 就是現(xiàn)在的狀態(tài)是什么剂府?同意拧揽?拒絕?還是未選擇過(guò)腺占? 然后提供了方法讓用戶(hù)去選擇淤袜。 然后有些屬性:NSSet類(lèi)型的supportedLocales(支持地區(qū)方言的集合),

available是否可用衰伯,locale當(dāng)前地區(qū) 铡羡,defaultTaskHint默認(rèn)類(lèi)別,request(就是上面說(shuō)的請(qǐng)求)意鲸,隊(duì)列烦周,代理尽爆。 然后有個(gè)協(xié)議和代理方法:發(fā)現(xiàn)用戶(hù)給與的權(quán)限發(fā)生改變時(shí)調(diào)用。

6和7. 上面第1條里說(shuō)過(guò)了

Wide Color 寬域顏色

文檔的原話(huà)說(shuō):大多數(shù)的 core字打頭的圖形框架 還有AVFoundation 都大大提高了對(duì)擴(kuò)展像素和寬色域色彩空間的支持读慎。通過(guò)圖形堆棧擴(kuò)展這種方式比以往支持廣色域的顯示設(shè)備更加容易∈現(xiàn)在對(duì)UIKit擴(kuò)展可以在sRGB的色彩空間下工作,性能更好夭委,也可以在更廣泛的色域來(lái)搭配sRGB顏色幅狮。 然后說(shuō)了幾個(gè)場(chǎng)景說(shuō)建議你用sRGB吧,比如依賴(lài)于UIkit的clamp component values的應(yīng)用程序株灸,或是使用較低級(jí)別api執(zhí)行自己圖像處理的 都建議用sRGB吧崇摄。

然后看了下UIColor類(lèi)里 到底什么是sRGB? 發(fā)現(xiàn)多了兩個(gè)iOS10新增的api慌烧。

+ (UIColor *)colorWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha ``NS_AVAILABLE_IOS``(10_0);

- (UIColor *)initWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha ``NS_AVAILABLE_IOS``(10_0);

|

細(xì)節(jié)都是一樣的就是一個(gè)類(lèi)方法一個(gè)實(shí)例方法逐抑, 我理解下,就是說(shuō)建議你們以前改用colorwithRGB的地方 現(xiàn)在都換成這個(gè)方法叭屹蚊〔薨保可能大多數(shù)公司都抽成了 RGB(a,g,b,a)這種宏吧,那就在宏定義那改一下就好了汹粤。

Adapting to the True Tone Display 真彩色顯示

真彩色的顯示會(huì)根據(jù)光感應(yīng)器來(lái)進(jìn)行自動(dòng)的調(diào)節(jié)來(lái)達(dá)到特定環(huán)境下的顯示與性能平衡效果腐巢。 如果需要這個(gè)功能的話(huà)需要再info.plist里配置

UIWhitePointAdaptivityStyle

共有五種選擇:

1.UIWhitePointAdaptivityStyleStandard 標(biāo)準(zhǔn)

2.UIWhitePointAdaptivityStyleReading 閱讀

3.UIWhitePointAdaptivityStylePhoto 圖片

4.UIWhitePointAdaptivityStyleVideo 視頻

5.UIWhitePointAdaptivityStyleGame 游戲

然后他說(shuō)的很清楚,如果你是圖片處理類(lèi)的app玄括,那就直接配stylePhoto吧,如果你是閱讀類(lèi)的那就直接配styleReading吧肉瓦。 這五個(gè)形式的顯示效果從上往下遞減遭京,我理解是說(shuō)在閱讀時(shí)給你最好的效果,但如果在游戲時(shí)也給那么好的效果會(huì)影響性能泞莉,就給你一個(gè)相對(duì)次一點(diǎn)的顯示效果讓性能更流暢哪雕。

App Search Enhancements 應(yīng)用搜索增強(qiáng)

iOS10的搜索功能做了一定增強(qiáng):應(yīng)用程序內(nèi)搜索,搜索傳遞鲫趁,考慮私人差異斯嚎,結(jié)果可視化。 使用CSSearchQuery類(lèi)挨厚,調(diào)用Core Spotlight的api堡僻,可以讓你不必自己維護(hù)自己的搜索索引,關(guān)于對(duì)搜索關(guān)鍵字的處理疫剃,還有考慮到不同類(lèi)別差異導(dǎo)致搜索結(jié)果的排序都是蘋(píng)果幫你處理钉疫。

并且搜索結(jié)果可以繼續(xù)往下傳遞,假設(shè)你用Core Spotlight搜索火車(chē)站巢价,提示的是地圖類(lèi)app搜索火車(chē)站的結(jié)果牲阁,你點(diǎn)進(jìn)去后固阁,這個(gè)地圖類(lèi)app會(huì)接收到“火車(chē)站”這個(gè)字段在應(yīng)用內(nèi)也完成搜索。支持此功能也是需要配置plist文件:key-value CoreSpotlightContinuation-YES城菊,然后設(shè)置CSQueryContinuationActionType(#import<CoreSpotlight/CSSearchableItem.h>)备燃。最后傳遞的搜索字符串用continueUserActivity:restorationHandler:方法接收。

然后現(xiàn)在看一下#import <CoreSpotlight/CSSearchQuery.h>頭文件里面的結(jié)構(gòu)凌唬。

看上去這個(gè)CSSearchQuery像是一個(gè)查詢(xún)語(yǔ)句操作并齐,有創(chuàng)建,查詢(xún)成功和錯(cuò)誤等法瑟。初始化方法是initWithQueryString: attributes:冀膝。 有isCanceled屬性 和 cancel 和 start方法。 還有foundItemCount屬性霎挟,看上去是能夠得到搜索的結(jié)果個(gè)數(shù)窝剖。protectionClasses(數(shù)組),看上去像是隱私相關(guān)受保護(hù)的文件酥夭。 還有兩個(gè)block赐纱,一個(gè)是搜索結(jié)束后回調(diào),參數(shù)是NSError熬北;一個(gè)是查詢(xún)到結(jié)果時(shí)回調(diào)疙描,參數(shù)是items數(shù)組。這個(gè)items數(shù)組都是CSSearchableItem類(lèi)型讶隐,這里面有個(gè)attributeSet屬性起胰,里面可以傳入以下類(lèi)型

image

Widget Enhancements 鎖屏部件增強(qiáng)

現(xiàn)在鎖屏界面有了新的設(shè)計(jì),建議我們廢棄以前的notificationCenterVibrancyEffect 改用widgetPrimaryVibrancyEffect或者widgetSecondaryVibrancyEffect巫延,并且窗口的小部件可以讓你描述有多少東西可用效五,支持緊湊和擴(kuò)展兩種形態(tài)。

這些新舊的Effect效果在這個(gè)類(lèi)下炉峰,可能是之前鎖屏玩不出什么花樣所以大家沒(méi)怎么關(guān)注這里畏妖。

<NotificationCenter/NotificationCenter.h> 里面有三個(gè)頭文件

image

1.NCWidgetProviding.h

先來(lái)兩個(gè)方法
- (``void``)widgetPerformUpdateWithCompletionHandler:(``void (^)(NCUpdateResult result))completionHandler;

這個(gè)方法如果實(shí)現(xiàn)了,系統(tǒng)將在適當(dāng)?shù)臅r(shí)候召喚部件更新形態(tài)疼阔,無(wú)論是在通知中心還是后臺(tái)戒劫。 需要啟用后臺(tái)更新功能,部件會(huì)在異步工作主線(xiàn)程更新婆廊,調(diào)用參數(shù)塊的工作完成后會(huì)得到相應(yīng)的結(jié)果迅细。

- (``void``)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode withMaximumSize:(CGSize)maxSize;

這個(gè)方法應(yīng)該是部件變化時(shí)調(diào)用,參數(shù)是最大有多大否彩。

這里聲明了一個(gè)分類(lèi)UIVibrancyEffect (NCWidgetAdditions)疯攒,里面就是本章節(jié)說(shuō)的iOS10新增API

+ (UIVibrancyEffect *)widgetPrimaryVibrancyEffect ``NS_AVAILABLE_IOS``(10_0);

+ (UIVibrancyEffect *)widgetSecondaryVibrancyEffect ``NS_AVAILABLE_IOS``(10_0);

這兩個(gè)方法名字上是老大和老二,有什么區(qū)別列荔? 都是用在選擇的文字或圖形上敬尺,默認(rèn)用上面枚尼,如果開(kāi)啟了further diminution(應(yīng)該是類(lèi)似于上面壓縮模式)就用下面的。

下面又聲明了一個(gè)分類(lèi)NSExtensionContext (NCWidgetAdditions)砂吞,里面也是iOS10的新增API

里面有兩個(gè)屬性 widgetLargestAvailableDisplayMode 署恍,widgetActiveDisplayMode 。 是兩種顯示模式是NCWidgetDisplayMode枚舉類(lèi)型蜻直,有緊縮和擴(kuò)張兩種盯质。 ,估計(jì)假如是新聞通知一個(gè)是一般大小概而,一個(gè)是點(diǎn)開(kāi)詳情的大小呼巷。 然后就是一個(gè)方法widgetMaximumSizeForDisplayMode ,返回值是CGSize取到播放模式的最大尺寸赎瑰。

2.NCWidgetController.h

里面除了個(gè)初始化方法王悍,還有一個(gè)方法

- (void)setHasContent:(BOOL)flag forWidgetWithBundleIdentifier:(NSString*)bundleID;

第一個(gè)參數(shù)默認(rèn)為yes,就是該展示時(shí)就展示餐曼,這個(gè)方法可以跨小組件間通訊压储,以及和providing app交互。

3.NCWidgetTypes.h

里面就一個(gè)枚舉類(lèi)型NCWidgetDisplayMode 源譬,前面第1點(diǎn)說(shuō)過(guò)了集惋。

Security and Privacy Enhancements 安全和保密性增強(qiáng)

安全方面在iOS10中引入了更多修改和補(bǔ)充,具體有以下幾點(diǎn):

1.在info.plist文件新增了一個(gè)key踩娘,NSAllowsArbitraryLoadsInWebContent刮刑,允許任意web頁(yè)面加載,同時(shí)蘋(píng)果會(huì)用ATS保護(hù)你的app养渴。

2.使用改進(jìn)后的SecKey API 而不是過(guò)時(shí)的 CDSA API为朋。

3.安全傳輸API中不再支持SSLv3, 建議你們盡快停用SHA1和3DES加密算法厚脉。

4.剪貼板的擴(kuò)展,因?yàn)閣wdc2016演示了可以跨設(shè)備復(fù)制粘貼啊胶惰,那肯定要做一些限制可見(jiàn)(#import <UIKit/UIPasteboard.h>)

5.這點(diǎn)最重要的傻工,建議盡快適配, 所有和用戶(hù)權(quán)限相關(guān)的地方必須在info.plist里配置里面包括
NSBluetoothPeripheralUsageDescription

NSCalendarsUsageDescription

NSCameraUsageDescription

NSContactsUsageDescription

NSHealthShareUsageDescription

NSHealthUpdateUsageDescription

NSHomeKitUsageDescription

NSLocationAlwaysUsageDescription

NSLocationWhenInUseUsageDescription

NSMicrophoneUsageDescription

NSMotionUsageDescription

NSPhotoLibraryUsageDescription

NSRemindersUsageDescription

NSSiriUsageDescription

NSSpeechRecognitionUsageDescription

NSVideoSubscriberAccountUsageDescription

NSVoIPUsageDescription

雖然現(xiàn)在還沒(méi)有iOS10系統(tǒng)的手機(jī)孵滞,但是我用模擬器試了下中捆,親測(cè)如果我想喚起通訊錄但是沒(méi)有配置NSContactsUsageDescription,剛啟動(dòng)時(shí)不會(huì)崩潰坊饶,但是在喚起操作發(fā)生時(shí)會(huì)直接崩潰泄伪。 在info.plist設(shè)置之后就可以正常使用了。

image

iOS11

iOS 11支持哪些設(shè)備

  • iPhone 5S, 6, 6 Plus, 6S Plus, SE, 7, 7 Plus
  • iPad Air and Air 2, iPad Mini 2, 3, 4, 5代 iPad匿级,所有的 iPad Pro
  • 6代 iPod Touch

iOS 新增了哪些框架

Core ML

iOS 11中蘋(píng)果新增了一個(gè)機(jī)器學(xué)習(xí)框架Core ML蟋滴,同時(shí)Apple也提供了一系列的工具用來(lái)將各類(lèi)機(jī)器學(xué)習(xí)的模型轉(zhuǎn)換為Core ML可以理解的形式染厅,從而幫助開(kāi)發(fā)者輕松的在APP里使用前人訓(xùn)練出來(lái)的模型。

ARKit

ARKit幫助開(kāi)發(fā)者更容易的在項(xiàng)目中使用AR功能津函,擴(kuò)展了應(yīng)用和游戲的應(yīng)用場(chǎng)景肖粮,三年前我在開(kāi)發(fā)帶有AR功能的App時(shí),相關(guān)的核心功能還需要像高通購(gòu)買(mǎi)SDK才能實(shí)現(xiàn)《啵現(xiàn)在有了ARKit普通開(kāi)發(fā)者也能夠開(kāi)發(fā)AR相關(guān)的功能了

其他值得注意的變更

  1. 在iOS 11系統(tǒng)中涩馆,在視頻播放界面調(diào)節(jié)音量時(shí)將不會(huì)出現(xiàn)音量提示框,一個(gè)比之前更小的音量滑動(dòng)條將會(huì)出現(xiàn)在屏幕的右上角

  2. 由于AppStore的改版允坚,原先在應(yīng)用內(nèi)設(shè)置的跳轉(zhuǎn)評(píng)分的鏈接將不會(huì)正常加載到評(píng)分界面

  3. 用戶(hù)能夠在AppStore中的產(chǎn)品頁(yè)面里直接進(jìn)行應(yīng)用內(nèi)購(gòu)買(mǎi)魂那,App必須支持新的SKPaymentTransactionObserver方法來(lái)支持AppStore內(nèi)的應(yīng)用內(nèi)購(gòu)買(mǎi)功能

  4. 開(kāi)發(fā)者能夠在后臺(tái)回復(fù)用戶(hù)的評(píng)論了,再也不用愁無(wú)法跟AppStore里的用戶(hù)進(jìn)行溝通了

  5. 由于我們?cè)趇Tunes Connect后臺(tái)只能提供一套產(chǎn)品信息稠项,類(lèi)如應(yīng)用名稱(chēng)涯雅、圖標(biāo)、截圖等皿渗,這就要求我們考慮到不同版本AppStore界面間的兼容

  6. 新的Navigation title設(shè)計(jì)斩芭,iOS 11系統(tǒng)中大多app都采用了這個(gè)新的設(shè)計(jì),放大了導(dǎo)航欄的標(biāo)題字體乐疆。雖然個(gè)人感覺(jué)有點(diǎn)丑划乖,但是如果想要采用這項(xiàng)設(shè)計(jì)的話(huà),只需要設(shè)置navigation barprefersLargeTitles即可挤土,當(dāng)然前提是你的導(dǎo)航欄是用的原生的navigation bar

  7. 提供了FileProvider功能讓App可以獲取用戶(hù)設(shè)備或云端上的文件

  8. iOS 11將不再支持32位的app琴庵,如果想要讓程序運(yùn)行在iOS 11設(shè)備上,進(jìn)行64位的重新編譯是必須步驟

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末仰美,一起剝皮案震驚了整個(gè)濱河市迷殿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌咖杂,老刑警劉巖庆寺,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異诉字,居然都是意外死亡懦尝,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)壤圃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)陵霉,“玉大人,你說(shuō)我怎么就攤上這事伍绳∮荒樱” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵冲杀,是天一觀的道長(zhǎng)效床。 經(jīng)常有香客問(wèn)我睹酌,道長(zhǎng),這世上最難降的妖魔是什么扁凛? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任忍疾,我火速辦了婚禮,結(jié)果婚禮上谨朝,老公的妹妹穿的比我還像新娘卤妒。我一直安慰自己,他們只是感情好字币,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布则披。 她就那樣靜靜地躺著,像睡著了一般洗出。 火紅的嫁衣襯著肌膚如雪士复。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,165評(píng)論 1 299
  • 那天翩活,我揣著相機(jī)與錄音阱洪,去河邊找鬼。 笑死菠镇,一個(gè)胖子當(dāng)著我的面吹牛冗荸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播利耍,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蚌本,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了隘梨?” 一聲冷哼從身側(cè)響起程癌,我...
    開(kāi)封第一講書(shū)人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎轴猎,沒(méi)想到半個(gè)月后嵌莉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捻脖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年烦秩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片郎仆。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖兜蠕,靈堂內(nèi)的尸體忽然破棺而出扰肌,到底是詐尸還是另有隱情,我是刑警寧澤熊杨,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布曙旭,位于F島的核電站盗舰,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏桂躏。R本人自食惡果不足惜钻趋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望剂习。 院中可真熱鬧蛮位,春花似錦、人聲如沸鳞绕。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)们何。三九已至萄焦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間冤竹,已是汗流浹背拂封。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鹦蠕,地道東北人冒签。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像片部,于是被迫代替她去往敵國(guó)和親镣衡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

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

  • 1.尺寸適配1.原因 iOS7中所有導(dǎo)航欄都為半透明档悠,導(dǎo)航欄(height=44)和狀態(tài)欄(height=20)不...
    LZM輪回閱讀 6,109評(píng)論 1 4
  • 用到的組件 1廊鸥、通過(guò)CocoaPods安裝 2、第三方類(lèi)庫(kù)安裝 3辖所、第三方服務(wù) 友盟社會(huì)化分享組件 友盟用戶(hù)反饋 ...
    SunnyLeong閱讀 14,613評(píng)論 1 180
  • 報(bào)稅和藝術(shù)完全不相關(guān)惰说,一個(gè)典型左腦思維分析數(shù)字,另一個(gè)典型右腦想象創(chuàng)意隨意缘回,竟讓我這不左不右吆视,或又左又右的人把它們...
    Elley0505閱讀 265評(píng)論 0 0
  • 如何利用豆瓣日記留網(wǎng)址鏈接,細(xì)節(jié)決定成敗 豆瓣是一個(gè)權(quán)重高收錄好的平臺(tái),可以寫(xiě)日記酥宴,發(fā)廣播等等啦吧,當(dāng)然關(guān)鍵還有排名非...
    冷的嚴(yán)冬閱讀 1,806評(píng)論 0 0