iOS - 毛玻璃动画效果
程序员文章站
2022-04-19 18:16:12
声明全局变量 ViewController.m showV.h showV.m ......
声明全局变量
#define kMainBoundsHeight ([UIScreen mainScreen].bounds).size.height //屏幕的高度 #define kMainBoundsWidth ([UIScreen mainScreen].bounds).size.width //屏幕的宽度 const CGFloat animalDuration = 0.25; //添加动画延时效果
ViewController.m
// // ViewController.m // iPhone // // Created by zlw on 2018/4/10. // Copyright © 2018年 xujinzhong. All rights reserved. // #import "ViewController.h" #import "Masonry.h" #import "ReactiveObjC.h" #import "showV.h" @interface ViewController () @end @implementation ViewController { UIButton *_doneBtn; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. self.view.backgroundColor = [UIColor whiteColor]; _doneBtn = [[UIButton alloc] init]; _doneBtn.backgroundColor = [UIColor grayColor]; _doneBtn.layer.cornerRadius = 4; _doneBtn.layer.masksToBounds = YES; [_doneBtn setTitle:@"show" forState:UIControlStateNormal]; [self.view addSubview:_doneBtn]; [_doneBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.top.offset(100); make.centerX.equalTo(self.view); make.width.offset(80); make.height.offset(100); }]; __block showV *_showView; [[_doneBtn rac_signalForControlEvents:UIControlEventTouchDown]subscribeNext:^(__kindof UIControl * _Nullable x) { _showView = [[showV alloc] init]; [self.view addSubview:_showView]; _showView.frame = CGRectMake(0, 0, kMainBoundsWidth, kMainBoundsHeight); [_showView showViewData]; }]; } @end
showV.h
// // showV.h // iPhone // // Created by zlw on 2018/4/10. // Copyright © 2018年 xujinzhong. All rights reserved. // #import <UIKit/UIKit.h> @interface showV : UIView -(void)showViewData; @end
showV.m
// // showV.m // iPhone // // Created by zlw on 2018/4/10. // Copyright © 2018年 xujinzhong. All rights reserved. // #import "showV.h" #import "Masonry.h" #import "ReactiveObjC.h" @interface showV () @property(nonatomic, strong) UIView *bkView; @property(nonatomic, strong) UIVisualEffectView *alphView; @property(nonatomic, strong) NSString *content; @end @implementation showV -(instancetype)init{ self = [super init]; if (self) { self.backgroundColor = [UIColor whiteColor]; } return self; } -(NSString *)content{ if (!_content) { _content = @"您将要激活闪电下单模式。通过点击下面的“我接受这些合同条款”,您会承认您已经阅读并理解以下合同条款,您同意特此遵守。您当前的程序端版本使您在下面的订单提交模式间选择。您同意遵守本规定的条款和条件,有关这样的模式。\n\n1. 订单提交的默认模式是两步处理法。使用默认模式,您需先选择买卖方向,然后您需要选择一个合适的订单类型,它的参数并且根据您选定的具体订单类型和您的交易意愿,通过点击买入,卖出,下单,确认您订单的提交。使用默认模式,您的订单将直到您完成前面提到的两个步骤才会提交。\n\n2. 订单提交的闪电下单模式是一步处理法。使用闪电下单模式,您的订单将会被直接提交,而无需再次确认。不会有后续确认提示您点击。一旦您点击,您将无法撤销或更改您的订单。在正常市场条件和系统性能下,市价订单提交后,单子会立即成交。\n\n您可以在【开启闪电下单按钮】停用闪电下单模式。\n\n通过选择闪电下单模式,您了解到您的订单将根据您点击卖或买价进行提交,没有后续订单确认。您同意并接受您选择的订单提交模式相关的全部风险,包括,但不限于,过失风险,提交订单时发生的失误。\n\n您同意完全赔偿和使ZLW TRADING 在由您,您的交易经理或任何代表您进行交易的人,造成的任何错误遗漏或失误而导致的结果引起的各种损失,成本和费用上免受损失。\n"; } return _content; } -(void)showViewData{ UIColor *bkColor = [UIColor blackColor]; UIColor *whileColor = [UIColor whiteColor]; UIColor *grayColor = [UIColor grayColor]; UIBlurEffect *beffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]; _alphView = [[UIVisualEffectView alloc] initWithEffect:beffect]; [self addSubview:_alphView]; _alphView.alpha = 0; [_alphView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(self); }]; self.bkView = [[UIView alloc] init]; [self addSubview:self.bkView]; self.bkView.backgroundColor = bkColor; self.bkView.frame = CGRectMake(0, kMainBoundsHeight-100, kMainBoundsWidth, 500); UILabel *labTitle = [UILabel new]; labTitle.text = @"免责声明"; labTitle.textAlignment = NSTextAlignmentCenter; labTitle.backgroundColor = bkColor; labTitle.textColor = whileColor; [self.bkView addSubview:labTitle]; [labTitle mas_makeConstraints:^(MASConstraintMaker *make) { make.left.top.equalTo(self.bkView); make.width.equalTo(self.bkView); make.height.offset(50); }]; UITextView *textV = [UITextView new]; textV.backgroundColor = bkColor; textV.textColor = grayColor; textV.font = [UIFont systemFontOfSize:14]; textV.text = self.content; textV.editable = NO; [self.bkView addSubview:textV]; [textV mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(labTitle.mas_bottom); make.centerX.equalTo(self.bkView); make.width.equalTo(self.bkView).offset(-20); make.bottom.equalTo(self.bkView).offset(-50); }]; UIButton *closeBtn = [UIButton new]; [closeBtn setTitle:@"关闭" forState:UIControlStateNormal]; closeBtn.backgroundColor = [UIColor blueColor]; [self.bkView addSubview:closeBtn]; [closeBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(textV.mas_bottom); make.centerX.equalTo(textV); make.width.equalTo(self.bkView); make.bottom.equalTo(self.bkView); }]; [[closeBtn rac_signalForControlEvents:UIControlEventTouchDown] subscribeNext:^(__kindof UIControl * _Nullable x) { [UIView animateWithDuration:animalDuration animations:^{ self.alphView.alpha = 0.0; self.bkView.frame = CGRectMake(0, kMainBoundsHeight, kMainBoundsWidth, 500); } completion:^(BOOL finished) { [self removeFromSuperview]; }]; }]; [UIView animateWithDuration:animalDuration animations:^{ self.alphView.alpha = 1.0; self.bkView.frame = CGRectMake(0, kMainBoundsHeight-505, kMainBoundsWidth, 500); }]; } - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ [UIView animateWithDuration:animalDuration animations:^{ self.alphView.alpha = 0.0; self.bkView.frame = CGRectMake(0, kMainBoundsHeight, kMainBoundsWidth, 500); } completion:^(BOOL finished) { [self removeFromSuperview]; }]; } @end
上一篇: 推荐10个非常实用的PHP代码片段