iOS10开发和Xcode 8新特性及常见问题解析

2020-01-18 14:21:46王旭

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 动画的类,具有以下特点:

可中断性

可擦除

可反转性

丰富的动画时间控制功能

官方文档: Snip20160618_30.pngSnip20160618_31.png

核心代码:


#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];
}