1.語(yǔ)音識(shí)別? ? ? 蘋果官方在文檔中新增了API? Speech,那么在以前我們處理語(yǔ)音識(shí)別非常的繁瑣甚至很多時(shí)候可能需要借助于第三方框架處理柠硕,那么蘋果推出了這個(gè)后抚岗,我們以后處理起來(lái)就非常的方便了,speech具有以下特點(diǎn):? 可以實(shí)現(xiàn)連續(xù)的語(yǔ)音識(shí)別? 可以對(duì)語(yǔ) 音文件或者語(yǔ)音流進(jìn)行識(shí)別? 最佳化自由格式的聽(tīng)寫(可理解為多語(yǔ)言支持)和搜索式的字符串官方文檔:? Snip20160618_28.pngSnip20160618_29.png核心代碼:[objc] view plain copy print?在CODE上查看代碼片派生到我的代碼片
#import//1.創(chuàng)建本地化標(biāo)識(shí)符? ? ? NSLocale *local =[[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];? ? ? //
2.創(chuàng)建一個(gè)語(yǔ)音識(shí)別對(duì)象? ? ? SFSpeechRecognizer *sf =[[SFSpeechRecognizer alloc] initWithLocale:local];??
3.將bundle 中的資源文件加載出來(lái)返回一個(gè)url? ? ? ??
? ? NSURL *url =[[NSBundle mainBundle] URLForResource:@"游子吟.mp3" withExtension:nil];? ? ? //
4.將資源包中獲取的url 傳遞給 request 對(duì)象? ? ? SFSpeechURLRecognitionRequest *res =[[SFSpeechURLRecognitionRequest alloc] initWithURL:url];? ? ? ? ? ? //
5.發(fā)送一個(gè)請(qǐng)求? ??
? [sf recognitionTaskWithRequest:res resultHandler:^(SFSpeechRecognitionResult * _Nullable result, NSError * _Nullable error) {? ? ? ? ?
?if (error!=nil) {? ? ? ? ? ?
?? NSLog(@"語(yǔ)音識(shí)別解析失敗,%@",error);? ? ? ? ? }? ? ? ?
?? else? ? ? ? ? {? ? ? ? ? ??
? //解析正確? ? ? ? ? ? ? NSLog(@"---%@",result.bestTranscription.formattedString);? ? ??
? ? }? ? ? }];? /**? ? ?
語(yǔ)音識(shí)別同樣的需要真機(jī)進(jìn)行測(cè)試 桥状,因?yàn)樾枰布闹С峙謇蹋€需要訪問(wèn)權(quán)限? ? ***/
2.UITabBarController 中的改進(jìn)? ? ? 在iOS 10之前域庇,tabBarItem上的文字顏色携兵,默認(rèn)是 藍(lán)色疾掰,上面的新消息提醒數(shù)字badge 默認(rèn)是紅色的,未選中的TabBarItem的文字顏色默認(rèn)是黑色的徐紧,我們修改的話静檬,也只能修改它的默認(rèn)顏色 ,其它的就不能進(jìn)行個(gè)性化定制并级,使用起來(lái)非常的不方便巴柿,iOS10之后我們可以輕松個(gè)性化定制了。? ? 核心代碼:[objc] view plain copy print?在CODE上查看代碼片派生到我的代碼片//
1.創(chuàng)建出三個(gè)UIViewcontroller 對(duì)象? ? ? ? ? ? OneViewController *oneVc =[[OneViewController alloc] init];? ? ? ? ? ? //
2.設(shè)置每一個(gè)控制器上的tabbar? ? ? oneVc.view.backgroundColor =[UIColor redColor];? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //設(shè)置標(biāo)題? ? ? oneVc.tabBarItem.title = @"首頁(yè)";? ? ? ? ? ? ? ? ? ??
TwoViewController *twovC =[[TwoViewController alloc] init];? ? ? ? ? ?
?twovC.view.backgroundColor =[UIColor purpleColor];? ? ? ? ? ? ? ? ? ?
?//設(shè)置標(biāo)題? ? ? twovC.tabBarItem.title = @"圈子";? ??
?ThreeViewController *threVC =[[ThreeViewController alloc] init];? ? ?
?threVC.view.backgroundColor =[UIColor blueColor];? ? ? ? ? ? ? //
設(shè)置標(biāo)題? ? ? threVC.tabBarItem.title = @"社交";? ? ? ? ? ? ? ? ? ? //
2.將創(chuàng)建好的三個(gè)普通控制器加入到tabbarController 控制器中? ? ? ? ? ??
?[self addChildViewController:oneVc];? ? ? ? ? ??
?[self addChildViewController:twovC];? ? ??
[self addChildViewController:threVC];? ? ? ? ? ? ? ? ? ? ? ? ? //
改變tabbar 上面的文字默認(rèn)顏色? ? ? ? ? ??
oneVc.tabBarController.tabBar.tintColor =[UIColor yellowColor];? ? ? ? ? ? ? ? twovC.tabBarController.tabBar.tintColor =[UIColor yellowColor];? ? ? ? ? ? ? ? threVC.tabBarController.tabBar.tintColor =[UIColor yellowColor];? ? ? ? ? ? ? ? ? ? //
使用iOS 10新推出的 修改 tabbar 未選中的tintColor 顏色? ? ? ? ? ? //
這一句代碼將 tabbar 未選中的時(shí)候的默認(rèn)色- 黑色改為紅色? ? ? ? ? ? oneVc.tabBarController.tabBar.unselectedItemTintColor =[UIColor redColor];? ? ? ? ? ? ? ? ? ? //
tabbarItem 中屬性? ? ? ? ? ? //
數(shù)字提醒的顏色? 在iOS 10之前的版本默認(rèn)都是數(shù)字提醒都是紅色? ? ??
oneVc.tabBarItem.badgeColor =[UIColor orangeColor];? ? ? oneVc.tabBarItem.badgeValue =@"90";? ? ? ? ? ? //
將tabBarItem 中數(shù)字提醒默認(rèn)的白色改掉? 使用富文本修改? ? ??
[oneVc.tabBarItem setBadgeTextAttributes:@{? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NSForegroundColorAttributeName:[UIColor blackColor]? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? } forState:UIControlStateNormal];??
3.iOS10.0中字體跟隨系統(tǒng)設(shè)置變化大小? ? ? 在以前如果說(shuō)我們想改變APP中程序的字體大小死遭,我們只能自定義字體或者使用runtime進(jìn)行處理广恢,或者都得設(shè)置UIFont,非常的不妨百年呀潭,從iOS 10蘋果官方允許我們自定義設(shè)置? 核心代碼:[objc] view plain copy print?在CODE上查看代碼片派生到我的代碼片/*? ? ? 在iOS 10當(dāng)中钉迷,當(dāng)咱們用戶將手機(jī)的字體大小進(jìn)行了設(shè)置調(diào)整之后,那么app中設(shè)置相關(guān)代碼字體也會(huì)跟著一起變化 钠署,支持常見(jiàn)一些字體UI控件 比如uilabel uibutton? ? ? **/? ? ? [super viewDidLoad];? ? ? ? ? ? //設(shè)置字體的改變大小? ? ? self.labels.font =[UIFont preferredFontForTextStyle:UIFontTextStyleBody];? ? ? //允許改變? ? ? ? ? ? /*? ? ? ? 蘋果官方明確的告訴你必須和? preferredFontForTextStyle 或者preferredFontForTextStyle:(NSString *)style compatibleWithTraitCollection 進(jìn)行結(jié)合使用? ? ? ? 注意這里不支持模擬器操作? ? ? **/? ? ? ? ? ?
?self.labels.adjustsFontForContentSizeCategory = YES;??
4. UIViewPropertyAnimator屬性動(dòng)畫器? 那么在iOS 10之前糠聪,我們使用UIView 做動(dòng)畫效果或者自定義一些layer 的動(dòng)畫,如果開(kāi)始了谐鼎,一般無(wú)法進(jìn)行停止操作更不能暫停操作舰蟆,而且一些非常復(fù)雜的動(dòng)畫處理也比較麻煩,但是在iOS10,蘋果退出了一個(gè)全新的API? UIViewPropertyAnimator身害,可供我們處理動(dòng)畫操作UIViewPropertyAnimator 是 iOS 10 中新增的一個(gè)執(zhí)行 View 動(dòng)畫的類味悄,具有以下特點(diǎn):? 可中斷性? 可擦除? 可反轉(zhuǎn)性? 豐富的動(dòng)畫時(shí)間控制功能官方文檔:? Snip20160618_30.pngSnip20160618_31.png核心代碼:[objc] view plain copy print?在CODE上查看代碼片派生到我的代碼片#import "ViewController.h"? @interface ViewController ()? @property(nonatomic,strong)UIView *myView;? @property(nonatomic,strong)UIViewPropertyAnimator *myViewPro;? @end? @implementation ViewController? - (void)viewDidLoad {? ? ? [super viewDidLoad];? ? ? ? ? ? //
1.創(chuàng)建一個(gè)View對(duì)象? ? ? UIView *Views =[[UIView alloc] initWithFrame:CGRectMake(50, 50, 100, 100)];? ? ? Views.backgroundColor =[UIColor yellowColor];? ? ? [self.view addSubview:Views];? ? ? //
2.創(chuàng)建一個(gè)外部的變量進(jìn)行引用? ? ? ? ? ? self.myView = Views;? ? ? ? ? ? ? ? ? ? //
3.創(chuàng)建一個(gè)view 動(dòng)畫器? ? ? UIViewPropertyAnimator *viewPro? =[UIViewPropertyAnimator runningPropertyAnimatorWithDuration:1.0 delay:30.0 options:UIViewAnimationOptionCurveLinear animations:^{? ? ? ? ? //使用View動(dòng)畫器修改View的frame? ? ? ? ? self.myView.frame = CGRectMake(230, 230, 130, 130);? ? ? } completion:nil];? ? ? ? ? ? self.myViewPro = viewPro;? }? //結(jié)束? - (IBAction)stop:(id)sender {? ? ? ? ? ? // YES 和NO 適用于設(shè)置當(dāng)前這個(gè)屬性動(dòng)畫器是否可以繼續(xù)使用? ? ? [self.myViewPro stopAnimation:YES];? }? //
繼續(xù)? - (IBAction)continued:(id)sender {? ? ? ? ? ? ? ? ? ? //UITimingCurveProvider? ? ? /**? ? @property(nullable, nonatomic, readonly) UICubicTimingParameters *cubicTimingParameters;? ? @property(nullable, nonatomic, readonly) UISpringTimingParameters *springTimingParameters;? ? ? ? ? ? **/? ? ? //設(shè)置彈簧效果 DampingRatio取值范圍是 0-1? ? ? ? ? ? //這個(gè)取值 決定彈簧抖動(dòng)效果 的大小 ,越往? 0 靠近那么就越明顯? ? ? UISpringTimingParameters *sp =[[UISpringTimingParameters alloc] initWithDampingRatio:0.01];? ? ? ? ? ? //設(shè)置一個(gè)動(dòng)畫的效果? //? ? UICubicTimingParameters *cub =[[UICubicTimingParameters alloc] initWithAnimationCurve:UIViewAnimationCurveEaseInOut];? ? ? ? ? ? ? //durationFactor? 給一個(gè)默認(rèn)值 1就可以? ? ? [self.myViewPro continueAnimationWithTimingParameters:sp durationFactor:1.0];? }? //暫停? - (IBAction)puase:(id)sender {? ? ? ? ? ? [self.myViewPro pauseAnimation];? }? //開(kāi)始? - (IBAction)start:(id)sender {? ? ? ? ? ? [self.myViewPro startAnimation];? }? 5.UIColor 新增方法? 在iOS10之前塌鸯,UIColor中設(shè)置顏色只能通過(guò)RGB 來(lái)表示侍瑟,在iOS原生還不支持#16進(jìn)制寫法,還得自己寫分類去處理丙猬,我們知道RGB表示的顏色是優(yōu)先的涨颜,而且也是不精準(zhǔn)的,那么在iOS10中茧球,蘋果官方新增了colorWithDisplayP3Red方法核心代碼:[objc] view plain copy print?在CODE上查看代碼片派生到我的代碼片+ (? UIColor? *)colorWithDisplayP3Red:(? CGFloat? )displayP3Red green:(? CGFloat? )green blue:(? CGFloat? )blue alpha:(? CGFloat? )alpha? NS_AVAILABLE_IOS? (? 10? _0);? 6.UIApplication對(duì)象中openUrl被廢棄? 在iOS 10.0以前的年代庭瑰,我們要想使用應(yīng)用程序去打開(kāi)一個(gè)網(wǎng)頁(yè)或者進(jìn)行跳轉(zhuǎn),直接使用[[UIApplication sharedApplication] openURL 方法就可以了抢埋,但是在iOS 10 已經(jīng)被廢棄了弹灭,因?yàn)槭褂眠@種方式,處理的結(jié)果我們不能攔截到也不能獲取到羹令,對(duì)于開(kāi)發(fā)是非常不利的鲤屡,在iOS 10全新的退出了? [[UIApplication sharedApplication] openURL:nil options:nil completionHandler:nil];有一個(gè)成功的回調(diào)block 可以進(jìn)行監(jiān)視。? 蘋果官方解釋:[objc] view plain copy print?在CODE上查看代碼片派生到我的代碼片//說(shuō)明在iOS 10.0中openUrl方法已經(jīng)廢棄了 改為openURL:nil options:nil completionHandler:^(BOOL success? ? ? /*? ? ? // Options are specified in the section below for openURL options. An empty options dictionary will result in the same? ? ? // behavior as the older openURL call, aside from the fact that this is asynchronous and calls the completion handler rather? ? ? // than returning a result.? ? ? // The completion handler is called on the main queue.? 關(guān)鍵代碼:[objc] view plain copy print?在CODE上查看代碼片派生到我的代碼片[[UIApplication sharedApplication] openURL:nil options:nil completionHandler:^(BOOL success) {? ? ? ? ? ? ? ? }];? 當(dāng)然除了以上的這些福侈,其它的還有很多酒来,比如下面這些6. SiriKit 在 iOS 10 里面開(kāi)發(fā)者可以使用 Siri SDK,毫無(wú)疑問(wèn)這也是 iOS 10 最重要的 SDK肪凛。從此開(kāi)發(fā)者可以使用原生API提供語(yǔ)音搜索堰汉、語(yǔ)音轉(zhuǎn)文字消息甚至更多常見(jiàn)語(yǔ)音功能。7.? User Notifications 這個(gè) API 讓你可以處理本地或遠(yuǎn)程的用戶通知伟墙,并且可以基于某個(gè)條件翘鸭,例如時(shí)間或者地理位置。這個(gè)異常強(qiáng)大戳葵,貌似可以攔截并替換自己 app 發(fā)下來(lái)的 payload就乓,并且在之前版本SDK的本地通知框架已經(jīng)被廢棄了,在上一篇帖子有所講到以及代碼都有展示拱烁。8.CallKit? 繼2014年蘋果推出VoIP證書后生蚁,這次VoIP 接口的開(kāi)放,以及一個(gè)全新的 App Extension戏自,簡(jiǎn)直是VOIP的福音邦投,可見(jiàn)蘋果對(duì)VOIP的重視。callkit框架 VoIP應(yīng)用程序集成與iPhone的用戶界面擅笔,給用戶一個(gè)很棒的經(jīng)歷志衣。用這個(gè)框架來(lái)讓用戶查看和接聽(tīng)電話的鎖屏和VoIP管理聯(lián)系人電話在手機(jī)APP的收藏夾和歷史的觀點(diǎn)屯援。callkit還介紹了應(yīng)用程序的擴(kuò)展,使呼叫阻塞和來(lái)電識(shí)別念脯。您可以創(chuàng)建一個(gè)應(yīng)用程序擴(kuò)展狞洋,可以將一個(gè)電話號(hào)碼與一個(gè)名稱聯(lián)系起來(lái),或者告訴系統(tǒng)當(dāng)一個(gè)號(hào)碼應(yīng)該被阻止和二。9.第三方鍵盤的改進(jìn)? ? 非常非常重要徘铝,第三方鍵盤一直都不能很方便的擁有長(zhǎng)按地球鍵的功能耳胎,現(xiàn)在有了惯吕。通過(guò) handleInputModeListFromView:withEvent: 可以彈出系統(tǒng)鍵盤列表。同時(shí)使用 documentInputMode 可以檢測(cè)輸入上下文中的語(yǔ)言怕午,你可以對(duì)輸入方式進(jìn)行一些類似于對(duì)齊方式的調(diào)整废登。10.iOS10 對(duì)隱私權(quán)限的管理? ? ? 比如訪問(wèn)的攝像頭、麥克風(fēng)等硬件郁惜,都需要提前請(qǐng)求應(yīng)用權(quán)限堡距、允許后才可以使用,或者現(xiàn)在要提前聲明兆蕉,雖然以往要求不嚴(yán)格羽戒。在iOS10中比如遇到崩潰,日志:? 崩潰日志:***This app has crashed because it attempted to access privacy-sensitive data without a usage description.? The app's Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data. 你需要在info.plist文件 添加一個(gè)“NSContactsUsageDescription ”的Key虎韵,Value添加一個(gè)描述易稠。ssss.png視頻播放 需要在info.Plist中配置? ? 官方解釋:This app has crashed because it attempted to access privacy-sensitive data without a usage description.? The app's Info.plist must contain an NSAppleMusicUsageDescription key with a string value explaining to the user how the app uses this data.? 訪問(wèn)用戶的隱私數(shù)據(jù),并且沒(méi)有向用戶說(shuō)明,必須在plist(info.plist)中配置這個(gè)key? NSAppleMusicUsageDescription 并且向用戶說(shuō)明.11.Xcode7 和Xcode 8項(xiàng)目中的xib兼容問(wèn)題? 在Xcode8上打開(kāi)項(xiàng)目要小心,尤其是對(duì)于xib過(guò)程包蓝,在變動(dòng)后可不要隨意點(diǎn)保存驶社,否則當(dāng)你回頭用Xcode7打開(kāi)時(shí)時(shí)發(fā)現(xiàn)報(bào)錯(cuò)了,Xcode保存的xib在xcode7上是識(shí)別不了的测萎!12.APPlePlay(蘋果支付)? ? ? ? ? 可用于 SFSafariViewController? 可用于沒(méi)有UI的extensions中? 在 iMessage 應(yīng)用中也支持 ApplePay13.CoreData提升了并發(fā)訪問(wèn)性能14.刷新控件(UIRefresh Control)iOS系統(tǒng)自帶的刷新控件支持所有的 UIScrollView 以及其子類亡电,比如說(shuō) UICollectionView,UITableView。核心代碼:[objc] view plain copy print?在CODE上查看代碼片派生到我的代碼片//? //? UIRefreshControlHosting.h? //? UIKit? //? //? Copyright 2016 Apple Inc. All rights reserved.? //? #import@class UIRefreshControl;? NS_CLASS_AVAILABLE_IOS(10_0) @protocol UIRefreshControlHosting@property (nonatomic, strong, nullable) UIRefreshControl *refreshControl __TVOS_PROHIBITED;
@end
15.GCD多線程支持創(chuàng)建私有隊(duì)列