标签:
这两天工作不忙,就去研究了下指纹解锁以及转场动画,其实这里面的单单一个动画就可以说半天了,但是今天不去说动画。这个以后有时间在讲讲。。
指纹解锁,很简单,官方文档上说的很清楚,其实我们要做的几乎没有。。
1、导入 #import <LocalAuthentication/LocalAuthentication.h> 这个框架
2、导入下面那段代码,指纹解锁就完成了, so easy!!!!然后再实现自己大逻辑就可以了。。
LAContext *myContext = [[LAContext alloc]init];
myContext.localizedFallbackTitle = @"忘记密码";
NSError *error = nil;
NSString *myLocalizedReasonString = @"请输入指纹";
//判断是否支持指纹解锁功能
if ([myContext canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
//支持指纹解锁
[myContext evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
localizedReason:myLocalizedReasonString
reply:^(BOOL success, NSError *error) {
if (success) {
//成功
[self showAlerView:@"验证成功"];
} else {
//失败
[self showAlerView:@"验证失败"];
NSLog(@"did not authenticate successfully");
}
}];
} else {
//不支持指纹解锁
NSLog(@"Could not evaluate policy");
[self showAlerView:@""];
}
指纹解锁完成了,接下来是自定义转场动画
1、在viewcontrol中实现UINavigationControllerDelegate的 下面这个方法
- (nullable id <UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController
animationControllerForOperation:(UINavigationControllerOperation)operation
fromViewController:(UIViewController *)fromVC
toViewController:(UIViewController *)toVC NS_AVAILABLE_IOS(7_0)
{
if (operation == UINavigationControllerOperationPush) {
return self.animator;
}
return nil;
}
2、创建一个类继承NSObject,遵循 UIViewControllerAnimatedTransitioning
/**
* 动画的时间按
*/
- (NSTimeInterval)transitionDuration:(id <UIViewControllerContextTransitioning>)transitionContext
{
return 1;
}
/**
* 执行的动画
*
*/
- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
{
UIViewController* toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
UIViewController* fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
[[transitionContext containerView] addSubview:toViewController.view];
toViewController.view.alpha = 0;
[UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{
CATransition *tion = [CATransition animation];
tion.type = @"oglFlip";
tion.subtype = kCATransitionFromTop;
tion.duration = 1;
[fromViewController.view.layer addAnimation:tion forKey:nil];
// fromViewController.view.transform = CGAffineTransformMakeRotation(0.5);//CGAffineTransformMakeScale(0.1, 0.1);
toViewController.view.alpha = 1;
} completion:^(BOOL finished) {
fromViewController.view.transform = CGAffineTransformIdentity;
[transitionContext completeTransition:![transitionContext transitionWasCancelled]];
}];
}
标签:
原文地址:http://www.cnblogs.com/lsios/p/4951579.html