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