123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- //
- // ELSelectView.m
- // Elink
- //
- // Created by iot_user on 2019/1/23.
- // Copyright © 2019年 iot_iMac. All rights reserved.
- //
-
- #import "ELSelectView.h"
- #import "CABasicAnimation+ELAnimation.h"
- #import "UILabel+WZAdd.h"
- #import "Masonry.h"
- #import "UIButton+WZAdd.h"
-
- //375x667的屏幕
- #define ScreenH [UIScreen mainScreen].bounds.size.height
- #define ScreenW [UIScreen mainScreen].bounds.size.width
-
- #define MaxHeight ScreenH/2
- #define MaxWeight 250
- #define CellHeight 45
-
- @implementation ELSelectViewCell
-
- -(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
- if (self = [super initWithStyle:style
- reuseIdentifier:reuseIdentifier]) {
- self.titleLbl = [UILabel createWithFrame:CGRectZero bgColor:[UIColor whiteColor] text:nil textColor:[UIColor grayColor] font:[UIFont systemFontOfSize:18] align:NSTextAlignmentCenter];
- self.titleLbl.numberOfLines=0;
- self.titleLbl.adjustsFontSizeToFitWidth = YES;
- [self.contentView addSubview:self.titleLbl];
- [self.titleLbl mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.left.right.bottom.mas_equalTo(0);
- }];
-
- self.selectionStyle = UITableViewCellSelectionStyleNone;
- }
- return self;
- }
-
- @end
-
- static NSString * ELSelectViewCellid = @"ELSelectViewCellid";
-
- @interface ELSelectView()<UITableViewDelegate, UITableViewDataSource>
- @property (nonatomic, strong) UITableView * tableView;
- @property (nonatomic, strong) UIView *alertView;
-
- @property (nonatomic, copy) NSArray * datas;
-
- @end
-
-
- @implementation ELSelectView
- -(UITableView *)tableView{
- if (_tableView == nil) {
- _tableView = [[UITableView alloc]init];
- _tableView.delegate = self;
- _tableView.dataSource = self;
- _tableView.tableFooterView = [[UIView alloc] init];
- _tableView.separatorColor = [UIColor clearColor];
- }
- return _tableView;
- }
- -(instancetype)initWithTitle:(NSString *)title withSelectArray:(NSArray<NSString *> *)array{
- if (self = [super init]) {
- self.frame = [UIScreen mainScreen].bounds;
- self.datas = [array copy];
- //
- UIView * backgrand = [[UIView alloc]init];
- backgrand.backgroundColor = [UIColor blackColor];
- backgrand.alpha = 0.5;
- backgrand.frame = self.frame;
- [self addSubview:backgrand];
- //
- CGFloat height = (array.count+1)*CellHeight;
- height = (height > MaxHeight?MaxHeight:height)+33;
- //TopMargin
- UIView * alertView = [[UIView alloc]init];
- self.alertView = alertView;
- alertView.frame = CGRectMake((ScreenW-MaxWeight)/2,(ScreenH-height)/2, MaxWeight, height);
- alertView.backgroundColor = [UIColor whiteColor];
- // alertView.layer.cornerRadius = 5;
- [self addSubview:alertView];
- //
- UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:alertView.bounds byRoundingCorners:(UIRectCornerAllCorners) cornerRadii:CGSizeMake(5, 5)];
- CAShapeLayer * layer = [CAShapeLayer layer];
- layer.frame = alertView.bounds;
- layer.path = path.CGPath;
- alertView.layer.mask = layer;
- //
- UILabel * titleLbl = [UILabel createWithFrame:CGRectZero bgColor:[UIColor whiteColor] text:title textColor:[UIColor lightGrayColor] font:[UIFont systemFontOfSize:15] align:NSTextAlignmentCenter];
- [alertView addSubview:titleLbl];
- [titleLbl mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.left.right.mas_equalTo(0);
- make.height.mas_equalTo(33);
- }];
- //
- UIButton * cancelBtn = [UIButton createWithFrame:CGRectZero bgColor:[UIColor whiteColor] font:[UIFont systemFontOfSize:16] norTitle:@"取消" norTitleColor:[UIColor lightGrayColor] norImage:nil borderColor:nil needRoundCorner:NO target:self action:@selector(cancelAction:)];
-
- [cancelBtn setTitleColor:[UIColor redColor] forState:(UIControlStateHighlighted)];
- [alertView addSubview:cancelBtn];
- [cancelBtn mas_makeConstraints:^(MASConstraintMaker *make) {
- make.bottom.left.right.mas_equalTo(0);
- make.height.mas_equalTo(CellHeight);
- }];
- //
- [alertView addSubview:self.tableView];
- [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.right.mas_equalTo(0);
- make.top.equalTo(titleLbl.mas_bottom).mas_offset(0);
- make.bottom.equalTo(cancelBtn.mas_top).mas_equalTo(0);
- }];
- }
- return self;
- }
- -(void)cancelAction:(UIButton *)sender{
- [self hide];
- }
-
- -(void)show{
- UIWindow * window = [UIApplication sharedApplication].windows.firstObject;;
- [window addSubview:self];
- [self.alertView.layer addAnimation:[CABasicAnimation scaleShowAnimationWithDuration:ELAnimationDuration] forKey:@"ELSelectViewShowAnimation"];
- }
-
- -(void)hide{
- [self.alertView.layer addAnimation:[CABasicAnimation scaleHideAnimationWithDuration:ELAnimationDuration] forKey:@"ELSelectViewHideAnimation"];
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(ELAnimationDuration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- [self removeFromSuperview];
- });
-
-
- }
-
-
- #pragma mark ============ UITableView数据源方法 ==============
- - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
-
- return 1;
- }
-
- - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
-
- return self.datas.count;
- }
-
- - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
- ELSelectViewCell * cell = [tableView dequeueReusableCellWithIdentifier:ELSelectViewCellid];
- if (cell == nil) {
- cell = [[ELSelectViewCell alloc]initWithStyle:(UITableViewCellStyleDefault) reuseIdentifier:ELSelectViewCellid];
- }
- cell.titleLbl.text = self.datas[indexPath.row];
-
- return cell;
-
- }
-
-
- #pragma mark ============ UITableView代理 ==============
- - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
- ELSelectViewCell * cell = [tableView cellForRowAtIndexPath:indexPath];
- cell.titleLbl.textColor = [UIColor blueColor];
- cell.titleLbl.font = [UIFont systemFontOfSize:20];
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(ELAnimationDuration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- if (self.selectRowBlock) {
- self.selectRowBlock(indexPath.row);
- }
-
- [self hide];
- });
-
- }
- -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
-
-
- return CellHeight;
- }
- @end
|