1.语音识别
苹果官方在文档中新增了API Speech,那么在以前我们处理语音识别非常的繁琐甚至很多时候可能需要借助于第三方框架处理,那么苹果推出了这个后,我们以后处理起来就非常的方便了,speech具有以下特点:
可以实现连续的语音识别
可以对语 音文件或者语音流进行识别
最佳化自由格式的听写(可理解为多语言支持)和搜索式的字符串
官方文档:
核心代码:
#import <Speech/Speech.h>
//1.创建本地化标识符
NSLocale *local =[[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"];
//2.创建一个语音识别对象
SFSpeechRecognizer *sf =[[SFSpeechRecognizer alloc] initWithLocale:local];
//3.将bundle 中的资源文件加载出来返回一个url
NSURL *url =[[NSBundle mainBundle] URLForResource:@"游子吟.mp3" withExtension:nil];
//4.将资源包中获取的url 传递给 request 对象
SFSpeechURLRecognitionRequest *res =[[SFSpeechURLRecognitionRequest alloc] initWithURL:url];
//5.发送一个请求
[sf recognitionTaskWithRequest:res resultHandler:^(SFSpeechRecognitionResult * _Nullable result, NSError * _Nullable error) {
if (error!=nil) {
NSLog(@"语音识别解析失败,%@",error);
}
else
{
//解析正确
NSLog(@"---%@",result.bestTranscription.formattedString);
}
}];
/**
语音识别同样的需要真机进行测试 ,因为需要硬件的支持,还需要访问权限
***/
2.UITabBarController 中的改进
在iOS 10之前,tabBarItem上的文字颜色,默认是 蓝色,上面的新消息提醒数字badge 默认是红色的,未选中的TabBarItem的文字颜色默认是黑色的,我们修改的话,也只能修改它的默认颜色 ,其它的就不能进行个性化定制,使用起来非常的不方便,iOS10之后我们可以轻松个性化定制了。
核心代码:
//1.创建出三个UIViewcontroller 对象
OneViewController *oneVc =[[OneViewController alloc] init];
//2.设置每一个控制器上的tabbar
oneVc.view.backgroundColor =[UIColor redColor];
//设置标题
oneVc.tabBarItem.title = @"首页";
TwoViewController *twovC =[[TwoViewController alloc] init];
twovC.view.backgroundColor =[UIColor purpleColor];
//设置标题
twovC.tabBarItem.title = @"圈子";
ThreeViewController *threVC =[[ThreeViewController alloc] init];
threVC.view.backgroundColor =[UIColor blueColor];
//设置标题
threVC.tabBarItem.title = @"社交";
//2.将创建好的三个普通控制器加入到tabbarController 控制器中
[self addChildViewController:oneVc];
[self addChildViewController:twovC];
[self addChildViewController:threVC];
//改变tabbar 上面的文字默认颜色
oneVc.tabBarController.tabBar.tintColor =[UIColor yellowColor];
twovC.tabBarController.tabBar.tintColor =[UIColor yellowColor];
threVC.tabBarController.tabBar.tintColor =[UIColor yellowColor];
//使用iOS 10新推出的 修改 tabbar 未选中的tintColor 颜色
//这一句代码将 tabbar 未选中的时候的默认色- 黑色改为红色
oneVc.tabBarController.tabBar.unselectedItemTintColor =[UIColor redColor];
//tabbarItem 中属性
//数字提醒的颜色 在iOS 10之前的版本默认都是数字提醒都是红色
oneVc.tabBarItem.badgeColor =[UIColor orangeColor];
oneVc.tabBarItem.badgeValue =@"90";
//将tabBarItem 中数字提醒默认的白色改掉 使用富文本修改
[oneVc.tabBarItem setBadgeTextAttributes:@{
NSForegroundColorAttributeName:[UIColor blackColor]
} forState:UIControlStateNormal];
3.iOS10.0中字体跟随系统设置变化大小
在以前如果说我们想改变APP中程序的字体大小,我们只能自定义字体或者使用runtime进行处理,或者都得设置UIFont,非常的不妨百年,从iOS 10苹果官方允许我们自定义设置
核心代码:
/*
在iOS 10当中,当咱们用户将手机的字体大小进行了设置调整之后,那么app中设置相关代码字体也会跟着一起变化 ,支持常见一些字体UI控件 比如uilabel uibutton
**/
[super viewDidLoad];
//设置字体的改变大小
self.labels.font =[UIFont preferredFontForTextStyle:UIFontTextStyleBody];
//允许改变
/*
苹果官方明确的告诉你必须和 preferredFontForTextStyle 或者preferredFontForTextStyle:(NSString *)style compatibleWithTraitCollection 进行结合使用
注意这里不支持模拟器操作
**/
self.labels.adjustsFontForContentSizeCategory = YES;
4. UIViewPropertyAnimator属性动画器
那么在iOS 10之前,我们使用UIView 做动画效果或者自定义一些layer 的动画,如果开始了,一般无法进行停止操作更不能暂停操作,而且一些非常复杂的动画处理也比较麻烦,但是在iOS10,苹果退出了一个全新的API UIViewPropertyAnimator,可供我们处理动画操作
UIViewPropertyAnimator 是 iOS 10 中新增的一个执行 View 动画的类,具有以下特点:
可中断性
可擦除
可反转性
丰富的动画时间控制功能
官方文档:
核心代码:
#import "ViewController.h"
@interface ViewController ()
@property(nonatomic,strong)UIView *myView;
@property(nonatomic,strong)UIViewPropertyAnimator *myViewPro;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//1.创建一个View对象
UIView *Views =[[UIView alloc] initWithFrame:CGRectMake(50, 50, 100, 100)];
Views.backgroundColor =[UIColor yellowColor];
[self.view addSubview:Views];
//2.创建一个外部的变量进行引用
self.myView = Views;
//3.创建一个view 动画器
UIViewPropertyAnimator *viewPro =[UIViewPropertyAnimator runningPropertyAnimatorWithDuration:1.0 delay:30.0 options:UIViewAnimationOptionCurveLinear animations:^{
//使用View动画器修改View的frame
self.myView.frame = CGRectMake(230, 230, 130, 130);
} completion:nil];
self.myViewPro = viewPro;
}
//结束
- (IBAction)stop:(id)sender {
// YES 和NO 适用于设置当前这个属性动画器是否可以继续使用
[self.myViewPro stopAnimation:YES];
}
//继续
- (IBAction)continued:(id)sender {
//UITimingCurveProvider
/**
@property(nullable, nonatomic, readonly) UICubicTimingParameters *cubicTimingParameters;
@property(nullable, nonatomic, readonly) UISpringTimingParameters *springTimingParameters;
**/
//设置弹簧效果 DampingRatio取值范围是 0-1
//这个取值 决定弹簧抖动效果 的大小 ,越往 0 靠近那么就越明显
UISpringTimingParameters *sp =[[UISpringTimingParameters alloc] initWithDampingRatio:0.01];
//设置一个动画的效果
// UICubicTimingParameters *cub =[[UICubicTimingParameters alloc] initWithAnimationCurve:UIViewAnimationCurveEaseInOut];
//durationFactor 给一个默认值 1就可以
[self.myViewPro continueAnimationWithTimingParameters:sp durationFactor:1.0];
}
//暂停
- (IBAction)puase:(id)sender {
[self.myViewPro pauseAnimation];
}
//开始
- (IBAction)start:(id)sender {
[self.myViewPro startAnimation];
}