From 83b9d5c682b21d88133f24da0f94dd56bd79e687 Mon Sep 17 00:00:00 2001 From: 单军华 Date: Thu, 19 Jul 2018 13:38:55 +0800 Subject: [PATCH] change --- screendisplay/Pods/MOFSPickerManager/MOFSPickerManagerDemo/MOFSPickerManager/MOFSPickerView.m | 243 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 243 insertions(+), 0 deletions(-) diff --git a/screendisplay/Pods/MOFSPickerManager/MOFSPickerManagerDemo/MOFSPickerManager/MOFSPickerView.m b/screendisplay/Pods/MOFSPickerManager/MOFSPickerManagerDemo/MOFSPickerManager/MOFSPickerView.m new file mode 100755 index 0000000..4d34e95 --- /dev/null +++ b/screendisplay/Pods/MOFSPickerManager/MOFSPickerManagerDemo/MOFSPickerManager/MOFSPickerView.m @@ -0,0 +1,243 @@ +// +// MOFSPickerView.m +// MOFSPickerManager +// +// Created by luoyuan on 16/8/30. +// Copyright �� 2016��� luoyuan. All rights reserved. +// + +#import "MOFSPickerView.h" +#import <objc/runtime.h> + +#define UISCREEN_WIDTH [UIScreen mainScreen].bounds.size.width +#define UISCREEN_HEIGHT [UIScreen mainScreen].bounds.size.height + +@interface MOFSPickerView() <UIPickerViewDelegate,UIPickerViewDataSource> + +@property (nonatomic, strong) NSMutableDictionary *recordDic; +@property (nonatomic, strong) NSMutableArray *dataArr; +@property (nonatomic, strong) UIView *bgView; + +@property (nonatomic, assign) NSInteger selectedRow; + +@property (nonatomic, copy) NSString *keyMapper; //���������������Key + +@end + +@implementation MOFSPickerView + +- (NSMutableArray *)dataArr { + if (!_dataArr) { + _dataArr = [NSMutableArray array]; + } + return _dataArr; +} + +- (NSMutableDictionary *)recordDic { + if (!_recordDic) { + _recordDic = [NSMutableDictionary dictionary]; + } + return _recordDic; +} + +#pragma mark - create UI + +- (instancetype)initWithFrame:(CGRect)frame { + + [self initToolBar]; + [self initContainerView]; + + CGRect initialFrame; + if (CGRectIsEmpty(frame)) { + initialFrame = CGRectMake(0, self.toolBar.frame.size.height, UISCREEN_WIDTH, 216); + } else { + initialFrame = frame; + } + self = [super initWithFrame:initialFrame]; + if (self) { + self.backgroundColor = [UIColor whiteColor]; + + self.delegate = self; + self.dataSource = self; + + [self initBgView]; + } + return self; +} + +- (void)initToolBar { + self.toolBar = [[MOFSToolView alloc] initWithFrame:CGRectMake(0, 0, UISCREEN_WIDTH, 44)]; + self.toolBar.backgroundColor = [UIColor whiteColor]; +} + +- (void)initContainerView { + self.containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, UISCREEN_WIDTH, UISCREEN_HEIGHT)]; + self.containerView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.4]; + self.containerView.userInteractionEnabled = YES; + [self.containerView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hiddenWithAnimation)]]; +} + +- (void)initBgView { + self.bgView = [[UIView alloc] initWithFrame:CGRectMake(0, UISCREEN_HEIGHT - self.frame.size.height - 44, UISCREEN_WIDTH, self.frame.size.height + self.toolBar.frame.size.height)]; +} + +#pragma mark - Action + +- (void)showMOFSPickerViewWithDataArray:(NSArray<NSString *> *)array commitBlock:(void(^)(NSString *string))commitBlock cancelBlock:(void(^)(void))cancelBlock { + self.keyMapper = nil; + self.dataArr = [NSMutableArray arrayWithArray:array]; + [self reloadAllComponents]; + self.selectedRow = 0; + NSString *tagStr = [NSString stringWithFormat:@"%ld",(long)self.showTag]; + if ([self.recordDic.allKeys containsObject:tagStr]) { + self.selectedRow = [self.recordDic[tagStr] integerValue]; + } + [self selectRow:self.selectedRow inComponent:0 animated:NO]; + + [self showWithAnimation]; + + __weak __typeof(self) weakSelf = self; + self.toolBar.cancelBlock = ^ { + if (cancelBlock) { + [weakSelf hiddenWithAnimation]; + cancelBlock(); + } + }; + + self.toolBar.commitBlock = ^ { + [weakSelf hiddenWithAnimation]; + if (commitBlock) { + NSString *rowStr = [NSString stringWithFormat:@"%ld",(long)weakSelf.selectedRow]; + [weakSelf.recordDic setValue:rowStr forKey:tagStr]; + commitBlock(weakSelf.dataArr[weakSelf.selectedRow]); + } + }; +} + +- (void)showMOFSPickerViewWithCustomDataArray:(NSArray<NSString *> *)array keyMapper:(NSString *)keyMapper commitBlock:(void (^)(id))commitBlock cancelBlock:(void (^)(void))cancelBlock { + self.keyMapper = keyMapper; + if (keyMapper == nil) { + self.dataArr = [NSMutableArray array]; + } else { + self.dataArr = [NSMutableArray arrayWithArray:array]; + } + + [self reloadAllComponents]; + self.selectedRow = 0; + NSString *tagStr = [NSString stringWithFormat:@"%ld",(long)self.showTag]; + if ([self.recordDic.allKeys containsObject:tagStr]) { + self.selectedRow = [self.recordDic[tagStr] integerValue]; + } + [self selectRow:self.selectedRow inComponent:0 animated:NO]; + + [self showWithAnimation]; + + __weak __typeof(self) weakSelf = self; + self.toolBar.cancelBlock = ^ { + if (cancelBlock) { + [weakSelf hiddenWithAnimation]; + cancelBlock(); + } + }; + + self.toolBar.commitBlock = ^ { + [weakSelf hiddenWithAnimation]; + if (commitBlock) { + NSString *rowStr = [NSString stringWithFormat:@"%ld",(long)weakSelf.selectedRow]; + [weakSelf.recordDic setValue:rowStr forKey:tagStr]; + commitBlock(weakSelf.dataArr[weakSelf.selectedRow]); + } + }; +} + +- (void)showWithAnimation { + [self addViews]; + self.containerView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.0]; + CGFloat height = self.bgView.frame.size.height; + self.bgView.center = CGPointMake(UISCREEN_WIDTH / 2, UISCREEN_HEIGHT + height / 2); + [UIView animateWithDuration:0.25 animations:^{ + self.bgView.center = CGPointMake(UISCREEN_WIDTH / 2, UISCREEN_HEIGHT - height / 2); + self.containerView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.4]; + }]; + +} + +- (void)hiddenWithAnimation { + CGFloat height = self.bgView.frame.size.height; + [UIView animateWithDuration:0.25 animations:^{ + self.bgView.center = CGPointMake(UISCREEN_WIDTH / 2, UISCREEN_HEIGHT + height / 2); + self.containerView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.0]; + } completion:^(BOOL finished) { + [self hiddenViews]; + }]; +} + +- (void)addViews { + UIWindow *window = [UIApplication sharedApplication].keyWindow; + [window addSubview:self.containerView]; + [window addSubview:self.bgView]; + [self.bgView addSubview:self.toolBar]; + [self.bgView addSubview:self]; +} + +- (void)hiddenViews { + [self removeFromSuperview]; + [self.toolBar removeFromSuperview]; + [self.bgView removeFromSuperview]; + [self.containerView removeFromSuperview]; +} + +#pragma mark - UIPickerViewDelegate,UIPickerViewDataSource + +- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { + return 1; +} + +- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { + return self.dataArr.count; +} + +- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component { + return 44; +} + +- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component { + if (self.keyMapper) { + id value = [self.dataArr[row] valueForKey:self.keyMapper]; + if ([value isKindOfClass:[NSString class]]) { + return value; + } else { + return @"������������"; + } + } + return self.dataArr[row]; +} + +- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { + self.selectedRow = row; +} + + +@end + +@implementation NSString (MOFSPickerView) + +@dynamic mofs_key, mofs_int_key; + +- (void)setMofs_key:(NSString *)mofs_key { + objc_setAssociatedObject(self, @selector(mofs_key), mofs_key, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +- (NSString *)mofs_key { + return objc_getAssociatedObject(self, _cmd); +} + +- (void)setMofs_int_key:(NSInteger)mofs_int_key { + objc_setAssociatedObject(self, @selector(mofs_int_key), @(mofs_int_key), OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +- (NSInteger)mofs_int_key { + return [objc_getAssociatedObject(self, _cmd) integerValue]; +} + +@end -- Gitblit v1.8.0