Files
peko-ios/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoEditPickView.m
2024-04-19 11:57:52 +08:00

208 lines
6.6 KiB
Objective-C

//
// XPMineUserInfoEditPickView.m
// xplan-ios
//
// Created by duoban on 2023/2/17.
//
#import "XPMineUserInfoEditPickView.h"
@interface XPMineUserInfoEditPickView()<UIPickerViewDelegate,UIPickerViewDataSource>
@property (strong, nonatomic) UIPickerView *pickerView;
@property (nonatomic,strong) UIView *bgView;
@property (nonatomic,strong) UIButton *cancelBtn;
@property (nonatomic,strong) UIButton *confirmBtn;
@end
@implementation XPMineUserInfoEditPickView
-(instancetype)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if(self){
[self initSubViews];
[self initSubViewConstraints];
}
return self;
}
-(void)setDataArray:(NSMutableArray *)dataArray{
_dataArray = dataArray;
if(_dataArray.count == 0)return;
if(![_dataArray containsObject:_area]){
_area = _dataArray.firstObject;
}
[_pickerView reloadAllComponents];
if([_dataArray containsObject:_area]){
[_pickerView selectRow:[_dataArray indexOfObject:_area] inComponent:0 animated:YES];
}else{
[_pickerView selectRow:0 inComponent:0 animated:YES];
}
}
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
return [_dataArray count];
}
-(CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{
return KScreenWidth;
}
-(CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component{
return kGetScaleWidth(38);
}
-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{
[self changeSpearatorLineColor];
AreaPickerView *lab = (AreaPickerView *)view;
if (!lab) {
lab = [[AreaPickerView alloc]initWithFrame:CGRectMake(kGetScaleWidth(15),0, KScreenWidth - kGetScaleWidth(30), kGetScaleWidth(38))];
}
NSString *area = self.dataArray[row];
lab.titleLab.text = area;
if([area isEqualToString:self.area]){
lab.backgroundColor = UIColorFromRGB(0xF3F5FA);
lab.titleLab.textColor = [DJDKMIMOMColor inputTextColor];
}else{
lab.backgroundColor = [UIColor clearColor];
lab.titleLab.textColor = [DJDKMIMOMColor disableButtonTextColor];
}
return lab;
}
#pragma mark - 改变分割线的颜色
- (void)changeSpearatorLineColor {
for(UIView *speartorView in _pickerView.subviews) {
if (speartorView.frame.size.height < 80) {//找出当前的 View
speartorView.backgroundColor = [UIColor clearColor];
}else{
speartorView.backgroundColor = [UIColor clearColor];
}
}
}
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
if(row < self.dataArray.count){
self.area = self.dataArray[row];
[pickerView reloadAllComponents];
}
}
#pragma mark - Private Method
- (void)initSubViews {
self.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5];
[self addSubview:self.bgView];
[self.bgView addSubview:self.cancelBtn];
[self.bgView addSubview:self.confirmBtn];
[self.bgView addSubview:self.pickerView];
}
- (void)initSubViewConstraints {
[self.bgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.leading.trailing.bottom.equalTo(self).inset(kGetScaleWidth(0));
make.height.mas_equalTo(kGetScaleWidth(272));
}];
[self.cancelBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.leading.mas_equalTo(kGetScaleWidth(15));
make.top.mas_equalTo(kGetScaleWidth(20));
make.height.mas_equalTo(kGetScaleWidth(20));
}];
[self.confirmBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(kGetScaleWidth(20));
make.trailing.mas_equalTo(-kGetScaleWidth(15));
}];
[self.pickerView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(kGetScaleWidth(74));
make.leading.trailing.bottom.equalTo(self.bgView).inset(kGetScaleWidth(0));
}];
}
-(void)cancelAction{
[self removeFromSuperview];
}
-(void)confirmAction{
[self removeFromSuperview];
if(self.delegate && [self.delegate respondsToSelector:@selector(didClickSureActionWithArea:)]){
[self.delegate didClickSureActionWithArea:self.area];
}
}
#pragma mark -懒加载
- (UIPickerView *)pickerView{
if (!_pickerView){
_pickerView = [[UIPickerView alloc]initWithFrame:CGRectZero];
if (@available(iOS 13.0, *)) {
_pickerView.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
}
_pickerView.delegate = self;
_pickerView.dataSource = self;
}
return _pickerView;
}
- (UIButton *)cancelBtn{
if (!_cancelBtn){
_cancelBtn = [UIButton buttonInitWithText:YMLocalizedString(@"XPIncomeRecordGoldDetailsPickViewView0") font:kFontMedium(16) textColor:[DJDKMIMOMColor disableButtonTextColor] image:nil bgImage:nil];
[_cancelBtn addTarget:self action:@selector(cancelAction) forControlEvents:UIControlEventTouchUpInside];
}
return _cancelBtn;
}
-(UIButton *)confirmBtn{
if (!_confirmBtn){
_confirmBtn = [UIButton buttonInitWithText:YMLocalizedString(@"XPIncomeRecordGoldDetailsPickViewView1") font:kFontMedium(16) textColor:[DJDKMIMOMColor inputTextColor] image:nil bgImage:nil];
[_confirmBtn addTarget:self action:@selector(confirmAction) forControlEvents:UIControlEventTouchUpInside];
}
return _confirmBtn;
}
- (UIView *)bgView{
if (!_bgView){
_bgView = [UIView new];
_bgView.backgroundColor = [UIColor whiteColor];
[_bgView setCornerWithLeftTopCorner:kGetScaleWidth(18) rightTopCorner:kGetScaleWidth(18) bottomLeftCorner:0 bottomRightCorner:0 size:CGSizeMake(KScreenWidth, kGetScaleWidth(302))];
}
return _bgView;
}
@end
@implementation AreaPickerView
-(instancetype)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if(self){
[self initSubViews];
[self initSubViewConstraints];
}
return self;
}
#pragma mark - Private Method
- (void)initSubViews {
self.backgroundColor = UIColorFromRGB(0xF3F5FA);
[self addSubview:self.titleLab];
}
- (void)initSubViewConstraints {
[self.titleLab mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self);
}];
}
#pragma mark -懒加载
- (UILabel *)titleLab{
if (!_titleLab){
_titleLab = [UILabel labelInitWithText:@"" font:kFontMedium(15) textColor:[DJDKMIMOMColor inputTextColor]];
_titleLab.textAlignment = NSTextAlignmentCenter;
}
return _titleLab;
}
@end