diff --git a/xplan-ios.xcodeproj/project.pbxproj b/xplan-ios.xcodeproj/project.pbxproj index f4fb170e..62af85c0 100644 --- a/xplan-ios.xcodeproj/project.pbxproj +++ b/xplan-ios.xcodeproj/project.pbxproj @@ -185,6 +185,7 @@ E8EEB91126FC6AE2007C6EBA /* XPMineUserInfoEditProtocol.h in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB91026FC6AD3007C6EBA /* XPMineUserInfoEditProtocol.h */; }; E8EEB91426FC7786007C6EBA /* XPMineUserInfoNickViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB91326FC7786007C6EBA /* XPMineUserInfoNickViewController.m */; }; E8EEB91726FC7B35007C6EBA /* XPMineUserInfoDesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB91626FC7B35007C6EBA /* XPMineUserInfoDesViewController.m */; }; + E8EEB91D26FC9D58007C6EBA /* XPMineUserInfoDateView.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EEB91C26FC9D58007C6EBA /* XPMineUserInfoDateView.m */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -527,6 +528,8 @@ E8EEB91326FC7786007C6EBA /* XPMineUserInfoNickViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoNickViewController.m; sourceTree = ""; }; E8EEB91526FC7B35007C6EBA /* XPMineUserInfoDesViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoDesViewController.h; sourceTree = ""; }; E8EEB91626FC7B35007C6EBA /* XPMineUserInfoDesViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoDesViewController.m; sourceTree = ""; }; + E8EEB91B26FC9D58007C6EBA /* XPMineUserInfoDateView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoDateView.h; sourceTree = ""; }; + E8EEB91C26FC9D58007C6EBA /* XPMineUserInfoDateView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoDateView.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -1171,6 +1174,8 @@ children = ( E88B5CC326FB42B000DA9178 /* XPMineUserInfoHeaderView.h */, E88B5CC426FB42B000DA9178 /* XPMineUserInfoHeaderView.m */, + E8EEB91B26FC9D58007C6EBA /* XPMineUserInfoDateView.h */, + E8EEB91C26FC9D58007C6EBA /* XPMineUserInfoDateView.m */, ); path = MineInfo; sourceTree = ""; @@ -1547,6 +1552,7 @@ E8B825B726E9A7D8009E8E9F /* BaseObject.m in Sources */, E8AC723526F49939007D6E91 /* XPMineNotificaPresenter.m in Sources */, 189DD53426DE255300AB55B1 /* TabbarViewController.m in Sources */, + E8EEB91D26FC9D58007C6EBA /* XPMineUserInfoDateView.m in Sources */, E8AC722F26F49610007D6E91 /* XPMineNotificationItemModel.m in Sources */, E8E70D7A26F2F16600F03460 /* XPMinePresent.m in Sources */, E8EEB8F226FC2050007C6EBA /* SDPhotoBrowser.m in Sources */, diff --git a/xplan-ios/Base/MVP/Api/Api.h b/xplan-ios/Base/MVP/Api/Api.h index 935b36a2..ab3210f3 100644 --- a/xplan-ios/Base/MVP/Api/Api.h +++ b/xplan-ios/Base/MVP/Api/Api.h @@ -39,6 +39,32 @@ NS_ASSUME_NONNULL_BEGIN code:(NSString *)code uid:(NSString *)uid ticket:(NSString *)ticket; + +/// 补全用户资料 +/// @param complection 完成 +/// @param avatar 用户的头像 +/// @param gender 用户的性别 +/// @param nick 用户的昵称 +/// @param birth 生日 +/// @param userDesc 签名 +/// @param inviteCode 邀请码 +/// @param uid 用户的uid +/// @param ticket ticket +/// @param roomUid 通过分享进入的app的 房间uid +/// @param shareUid 分享的uid +/// @param shareChannel 分享的渠道 ++ (void)complementInfoWithComplection:(HttpRequestHelperCompletion)complection + avatar:(NSString *)avatar + gender:(NSString *)gender + nick:(NSString *)nick + birth:(NSString *)birth + userDesc:(NSString *)userDesc + inviteCode:(NSString *)inviteCode + uid:(NSString *)uid + ticket:(NSString *)ticket + roomUid:(NSString *)roomUid + shareUid:(NSString *)shareUid + shareChannel:(NSString *)shareChannel; @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Base/MVP/Api/Api.m b/xplan-ios/Base/MVP/Api/Api.m index 92c227f7..1564c40e 100644 --- a/xplan-ios/Base/MVP/Api/Api.m +++ b/xplan-ios/Base/MVP/Api/Api.m @@ -62,4 +62,33 @@ [self makeRequest:@"sms/verify" method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__, mobile, code, uid, ticket,nil]; } +/// 补全用户资料 +/// @param complection 完成 +/// @param avatar 用户的头像 +/// @param gender 用户的性别 +/// @param nick 用户的昵称 +/// @param birth 生日 +/// @param userDesc 签名 +/// @param inviteCode 邀请码 +/// @param uid 用户的uid +/// @param ticket ticket +/// @param roomUid 通过分享进入的app的 房间uid +/// @param shareUid 分享的uid +/// @param shareChannel 分享的渠道 ++ (void)complementInfoWithComplection:(HttpRequestHelperCompletion)complection + avatar:(NSString *)avatar + gender:(NSString *)gender + nick:(NSString *)nick + birth:(NSString *)birth + userDesc:(NSString *)userDesc + inviteCode:(NSString *)inviteCode + uid:(NSString *)uid + ticket:(NSString *)ticket + roomUid:(NSString *)roomUid + shareUid:(NSString *)shareUid + shareChannel:(NSString *)shareChannel { + [self makeRequest:@"user/v2/update" method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__,avatar,gender,nick, inviteCode, uid, ticket, roomUid, shareUid, shareChannel,nil]; + +} + @end diff --git a/xplan-ios/Main/Login/Api/Api+Login.h b/xplan-ios/Main/Login/Api/Api+Login.h index 28f129eb..81fabd08 100644 --- a/xplan-ios/Main/Login/Api/Api+Login.h +++ b/xplan-ios/Main/Login/Api/Api+Login.h @@ -75,27 +75,6 @@ NS_ASSUME_NONNULL_BEGIN /// @param completion 完成 + (void)randomNickWithComplection:(HttpRequestHelperCompletion)completion; -/// 补全用户资料 -/// @param complection 完成 -/// @param avatar 用户的头像 -/// @param gender 用户的性别 -/// @param nick 用户的昵称 -/// @param inviteCode 邀请码 -/// @param uid 用户的uid -/// @param ticket ticket -/// @param roomUid 通过分享进入的app的 房间uid -/// @param shareUid 分享的uid -/// @param shareChannel 分享的渠道 -+ (void)complementInfoWithComplection:(HttpRequestHelperCompletion)complection - avatar:(NSString *)avatar - gender:(NSString *)gender - nick:(NSString *)nick - inviteCode:(NSString *)inviteCode - uid:(NSString *)uid - ticket:(NSString *)ticket - roomUid:(NSString *)roomUid - shareUid:(NSString *)shareUid - shareChannel:(NSString *)shareChannel; /// 绑定手机号码 /// @param complection 完成 /// @param mobile 手机号 diff --git a/xplan-ios/Main/Login/Api/Api+Login.m b/xplan-ios/Main/Login/Api/Api+Login.m index 0f188f50..89d29221 100644 --- a/xplan-ios/Main/Login/Api/Api+Login.m +++ b/xplan-ios/Main/Login/Api/Api+Login.m @@ -66,32 +66,6 @@ [self makeRequest:@"random/nick/get" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, nil]; } - -/// 补全用户资料 -/// @param complection 完成 -/// @param avatar 用户的头像 -/// @param gender 用户的性别 -/// @param nick 用户的昵称 -/// @param inviteCode 邀请码 -/// @param uid 用户的uid -/// @param ticket ticket -/// @param roomUid 通过分享进入的app的 房间uid -/// @param shareUid 分享的uid -/// @param shareChannel 分享的渠道 -+ (void)complementInfoWithComplection:(HttpRequestHelperCompletion)complection - avatar:(NSString *)avatar - gender:(NSString *)gender - nick:(NSString *)nick - inviteCode:(NSString *)inviteCode - uid:(NSString *)uid - ticket:(NSString *)ticket - roomUid:(NSString *)roomUid - shareUid:(NSString *)shareUid - shareChannel:(NSString *)shareChannel { - [self makeRequest:@"user/v2/update" method:HttpRequestHelperMethodPOST completion:complection, __FUNCTION__,avatar,gender,nick, inviteCode, uid, ticket, roomUid, shareUid, shareChannel,nil]; - -} - /// 绑定手机号码 /// @param complection 完成 /// @param mobile 手机号 diff --git a/xplan-ios/Main/Login/Presenter/LoginFullInfoPresenter.m b/xplan-ios/Main/Login/Presenter/LoginFullInfoPresenter.m index 3b559d60..9b353712 100644 --- a/xplan-ios/Main/Login/Presenter/LoginFullInfoPresenter.m +++ b/xplan-ios/Main/Login/Presenter/LoginFullInfoPresenter.m @@ -69,9 +69,10 @@ if (shareChannel.length <= 0) { shareChannel = @""; } + [Api complementInfoWithComplection:[self createHttpCompletion:^(BaseModel * _Nonnull data) { [[self getView] complementInfoSuccess]; - } showLoading:YES] avatar:avatar gender:gender nick:nick inviteCode:inviteCode uid:uid ticket:ticket roomUid:roomUid shareUid:shareUid shareChannel:shareChannel]; + }] avatar:avatar gender:gender nick:nick birth:@"" userDesc:@"" inviteCode:inviteCode uid:uid ticket:ticket roomUid:roomUid shareUid:shareUid shareChannel:shareChannel]; } @end diff --git a/xplan-ios/Main/Mine/Presenter/XPMineUserInfoEditPresenter.h b/xplan-ios/Main/Mine/Presenter/XPMineUserInfoEditPresenter.h index e2fb2553..90df6250 100644 --- a/xplan-ios/Main/Mine/Presenter/XPMineUserInfoEditPresenter.h +++ b/xplan-ios/Main/Mine/Presenter/XPMineUserInfoEditPresenter.h @@ -14,6 +14,15 @@ NS_ASSUME_NONNULL_BEGIN ///获取个人资料页编辑的数据源 - (void)getUserInfoEditDataSourceWithUserInfo:(UserInfoModel *)userInfo; +/// 补全资料 +/// @param avatar 头像 +/// @param nick 昵称 +/// @param birth 生日 +/// @param userDesc 用户的签名 +- (void)complectionInfoWithAvatar:(NSString * _Nullable)avatar + nick:(NSString * _Nullable)nick + birth:(NSString * _Nullable)birth + userDesc:(NSString * _Nullable)userDesc; @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/Presenter/XPMineUserInfoEditPresenter.m b/xplan-ios/Main/Mine/Presenter/XPMineUserInfoEditPresenter.m index 2dbec1c7..3beaec4a 100644 --- a/xplan-ios/Main/Mine/Presenter/XPMineUserInfoEditPresenter.m +++ b/xplan-ios/Main/Mine/Presenter/XPMineUserInfoEditPresenter.m @@ -6,7 +6,10 @@ // #import "XPMineUserInfoEditPresenter.h" - +///Api +#import "Api.h" +///Tool +#import "AccountInfoStorage.h" ///Model #import "XPMineUserInfoEditModel.h" #import "UserInfoModel.h" @@ -58,9 +61,38 @@ [[self getView] getUserInfoEditDataSourceSuccess:self.editArray]; } +/// 补全资料 +/// @param avatar 头像 +/// @param nick 昵称 +/// @param birth 生日 +/// @param userDesc 用户的签名 +- (void)complectionInfoWithAvatar:(NSString * _Nullable)avatar + nick:(NSString * _Nullable)nick + birth:(NSString * _Nullable)birth + userDesc:(NSString * _Nullable)userDesc { + NSString * uid = [AccountInfoStorage instance].getUid; + NSString * ticket = [[AccountInfoStorage instance] getTicket]; + if (avatar.length <= 0) { + avatar = @""; + } + + if (nick.length <= 0) { + nick = @""; + } + + if (birth.length <= 0) { + birth = @""; + } + + if (userDesc.length <= 0) { + userDesc = @""; + } + [Api complementInfoWithComplection:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView] complementUserInfoSuccess]; + } showLoading:YES] avatar:avatar gender:@"" nick:nick birth:birth userDesc:userDesc inviteCode:@"" uid:uid ticket:ticket roomUid:@"" shareUid:@"" shareChannel:@""]; +} - - +#pragma mark - Getters And Setters - (XPMineUserInfoEditModel *)nickItem { if (!_nickItem) { _nickItem = [[XPMineUserInfoEditModel alloc] init]; diff --git a/xplan-ios/Main/Mine/Protocol/XPMineUserInfoEditProtocol.h b/xplan-ios/Main/Mine/Protocol/XPMineUserInfoEditProtocol.h index 3a1c0211..aa0f9327 100644 --- a/xplan-ios/Main/Mine/Protocol/XPMineUserInfoEditProtocol.h +++ b/xplan-ios/Main/Mine/Protocol/XPMineUserInfoEditProtocol.h @@ -12,6 +12,8 @@ NS_ASSUME_NONNULL_BEGIN @protocol XPMineUserInfoEditProtocol ///获取编辑个人资料页面的数据 - (void)getUserInfoEditDataSourceSuccess:(NSArray *)array; +///补全资料 +- (void)complementUserInfoSuccess; @end NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineUserInfoCustomNavView.m b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineUserInfoCustomNavView.m index edd9e48f..712a59b5 100644 --- a/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineUserInfoCustomNavView.m +++ b/xplan-ios/Main/Mine/View/Cell/MineInfo/XPMineUserInfoCustomNavView.m @@ -10,6 +10,7 @@ #import ///Tool #import "ThemeColor.h" +#import "UIButton+EnlargeTouchArea.h" @interface XPMineUserInfoCustomNavView () ///返回按钮 @@ -75,6 +76,7 @@ [_backButton setImage:[UIImage imageNamed:@"common_nav_back"] forState:UIControlStateNormal]; _backButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; [_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_backButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; } return _backButton; } @@ -85,6 +87,7 @@ _editButton = [UIButton buttonWithType:UIButtonTypeCustom]; [_editButton setImage:[UIImage imageNamed:@"mine_user_info_edit"] forState:UIControlStateNormal]; [_editButton addTarget:self action:@selector(editButtonAction:) forControlEvents:UIControlEventTouchUpInside]; + [_editButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10]; } return _editButton; } diff --git a/xplan-ios/Main/Mine/View/MineInfo/XPMineUserInfoEditViewController.m b/xplan-ios/Main/Mine/View/MineInfo/XPMineUserInfoEditViewController.m index ec329f99..0e264715 100644 --- a/xplan-ios/Main/Mine/View/MineInfo/XPMineUserInfoEditViewController.m +++ b/xplan-ios/Main/Mine/View/MineInfo/XPMineUserInfoEditViewController.m @@ -8,12 +8,17 @@ #import "XPMineUserInfoEditViewController.h" ///Third #import +#import +///Tool #import "ThemeColor.h" +#import "TTPopup.h" +#import "YYUtility.h" ///Model #import "XPMineUserInfoEditModel.h" #import "UserInfoModel.h" ///View #import "XPMineUserInfoEditTableViewCell.h" +#import "XPMineUserInfoDateView.h" ///P #import "XPMineUserInfoEditProtocol.h" #import "XPMineUserInfoEditPresenter.h" @@ -21,11 +26,13 @@ #import "XPMineUserInfoNickViewController.h" #import "XPMineUserInfoDesViewController.h" -@interface XPMineUserInfoEditViewController () +@interface XPMineUserInfoEditViewController () ///列表 @property (nonatomic,strong) UITableView *tableView; ///数据源 -@property (nonatomic,strong) NSArray *datasouce;; +@property (nonatomic,strong) NSArray *datasouce; +/// 日期选择器 +@property (nonatomic,strong) XPMineUserInfoDateView *dateView; @end @implementation XPMineUserInfoEditViewController @@ -52,6 +59,65 @@ }]; } +- (void)showPhotoView { + @weakify(self); + TTActionSheetConfig *cameraConfig = [TTActionSheetConfig normalTitle:@"拍照上传" clickAction:^{ + [YYUtility checkCameraAvailable:^{ + @strongify(self); + UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; + imagePicker.delegate = self; + imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; + imagePicker.allowsEditing = YES; + [self presentViewController:imagePicker animated:YES completion:NULL]; + } denied:^{ + @strongify(self); + [self showNotPhoto:@"相机不可用" content:@"相机权限受限,点击确定去系统设置"]; + } restriction:^{ + @strongify(self); + [self showNotPhoto:@"相机不可用" content:@"相册权限受限,点击确定去系统设置"]; + }]; + }]; + + TTActionSheetConfig *photoLibrayConfig = [TTActionSheetConfig normalTitle:@"本地相册" clickAction:^{ + [YYUtility checkAssetsLibrayAvailable:^{ + @strongify(self); + UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; + imagePicker.modalPresentationCapturesStatusBarAppearance = YES; + imagePicker.delegate = self; + imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; + imagePicker.allowsEditing = YES; + [self presentViewController:imagePicker animated:YES completion:NULL]; + } denied:^{ + @strongify(self); + [self showNotPhoto:@"相册不可用" content:@"相册权限受限,点击确定去系统设置"]; + } restriction:^{ + @strongify(self); + [self showNotPhoto:@"相册不可用" content:@"相册权限受限,点击确定去系统设置"]; + }]; + }]; + + [TTPopup actionSheetWithItems:@[cameraConfig, photoLibrayConfig]]; +} + +- (void)showNotPhoto:(NSString *)title content:(NSString *)content { + TTAlertConfig *config = [[TTAlertConfig alloc] init]; + config.title = title; + config.message = content; + + [TTPopup alertWithConfig:config confirmHandler:^{ + NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; + if ([[UIApplication sharedApplication] canOpenURL:url]) { + [[UIApplication sharedApplication] openURL:url]; + } + } cancelHandler:^{ + }]; +} + +- (void)showDatePickerView { + self.dateView.time = self.userInfo.birth/1000; + [TTPopup popupView:self.dateView style:TTPopupStyleActionSheet]; +} + #pragma mark - UITableViewDelegate And UITableViewDataSource - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; @@ -93,14 +159,10 @@ } break; case XPMineUserInfoEditType_Avatar: - { -#warning to do 选择头像 - } + [self showPhotoView]; break; case XPMineUserInfoEditType_Birth: - { -#warning to do 选择日期 - } + [self showDatePickerView]; break; case XPMineUserInfoEditType_UseDes: { @@ -121,13 +183,47 @@ } } +#pragma mark - UIImagePickerControllerDelegate +- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info +{ + UIImage *selectedPhoto = [info objectForKey:UIImagePickerControllerEditedImage]; + if (selectedPhoto) { + if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) { + UIImageWriteToSavedPhotosAlbum(selectedPhoto, nil, nil, nil); + } +#warning to do 上传图片 + } + [picker dismissViewControllerAnimated:YES completion:^{}]; +} + +- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{ + [picker dismissViewControllerAnimated:YES completion:^{ + }]; +} + +#pragma mark - XPMineUserInfoDateViewDelegate +- (void)xPMineUserInfoDateView:(XPMineUserInfoDateView *)view didClickSureButton:(NSString *)dateStr{ + [TTPopup dismiss]; + if (dateStr.length > 0) { + [self.presenter complectionInfoWithAvatar:nil nick:nil birth:dateStr userDesc:nil]; + } +} + +- (void)xPMineUserInfoDateView:(XPMineUserInfoDateView *)view didClickCancleButton:(UIButton *)sender { + [TTPopup dismiss]; +} + #pragma mark - XPMineUserInfoNickViewControllerDelegate - (void)xPMineUserInfoNickViewController:(XPMineUserInfoNickViewController *)viewController updateNick:(NSString *)nick { - + if (nick.length > 0) { + [self.presenter complectionInfoWithAvatar:nil nick:nick birth:nil userDesc:nil]; + } } #pragma mark - XPMineUserInfoDesViewControllerDelegate - (void)xPMineUserInfoDesViewController:(XPMineUserInfoDesViewController *)viewController updateUserDes:(NSString *)userDes { - + if (userDes.length > 0) { + [self.presenter complectionInfoWithAvatar:nil nick:nil birth:nil userDesc:userDes]; + } } #pragma mark - XPMineUserInfoEditProtocol @@ -135,6 +231,11 @@ self.datasouce = array; [self.tableView reloadData]; } + +- (void)complementUserInfoSuccess { + [self hideHUD]; + [self showSuccessToast:@"更新成功"]; +} #pragma mark - Getters And Setters - (UITableView *)tableView { if (!_tableView) { @@ -153,4 +254,12 @@ return _tableView; } +- (XPMineUserInfoDateView *)dateView { + if (!_dateView) { + _dateView = [[XPMineUserInfoDateView alloc] init]; + _dateView.delegate = self; + } + return _dateView; +} + @end diff --git a/xplan-ios/Main/Mine/View/SubViews/MineInfo/XPMineUserInfoDateView.h b/xplan-ios/Main/Mine/View/SubViews/MineInfo/XPMineUserInfoDateView.h new file mode 100644 index 00000000..5fffab39 --- /dev/null +++ b/xplan-ios/Main/Mine/View/SubViews/MineInfo/XPMineUserInfoDateView.h @@ -0,0 +1,26 @@ +// +// XPMineUserInfoDateView.h +// xplan-ios +// +// Created by 冯硕 on 2021/9/23. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +@class XPMineUserInfoDateView; +@protocol XPMineUserInfoDateViewDelegate +///取消 +- (void)xPMineUserInfoDateView:(XPMineUserInfoDateView *)view didClickCancleButton:(UIButton *)sender; +///确定 +- (void)xPMineUserInfoDateView:(XPMineUserInfoDateView *)view didClickSureButton:(NSString *)dateStr; +@end + +@interface XPMineUserInfoDateView : UIView +// 设置当前日期 时间戳 +@property (nonatomic, assign) NSTimeInterval time;// +///代理 +@property (nonatomic,weak) id delegate; +@end + +NS_ASSUME_NONNULL_END diff --git a/xplan-ios/Main/Mine/View/SubViews/MineInfo/XPMineUserInfoDateView.m b/xplan-ios/Main/Mine/View/SubViews/MineInfo/XPMineUserInfoDateView.m new file mode 100644 index 00000000..baeffe9e --- /dev/null +++ b/xplan-ios/Main/Mine/View/SubViews/MineInfo/XPMineUserInfoDateView.m @@ -0,0 +1,137 @@ +// +// XPMineUserInfoDateView.m +// xplan-ios +// +// Created by 冯硕 on 2021/9/23. +// + +#import "XPMineUserInfoDateView.h" +///Third +#import +///Tool +#import "ThemeColor.h" + +@interface XPMineUserInfoDateView () +/// +@property (nonatomic,strong) UIButton *cancleButton; +/// +@property (nonatomic,strong) UIButton *sureButton; +/// +@property (nonatomic, strong) UIDatePicker *datePicker; +///样式 +@property (nonatomic, strong) NSDateFormatter *dateFormatter; +@end + +@implementation XPMineUserInfoDateView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initSubViews]; + [self initSubViewConstraints]; + } + return self; +} + +#pragma mark - Private Method +- (void)initSubViews { + [self addSubview:self.cancleButton]; + [self addSubview:self.sureButton]; + [self addSubview:self.datePicker]; +} + +- (void)initSubViewConstraints { + [self.datePicker mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self); + make.bottom.mas_equalTo(self); + make.top.mas_equalTo(self.cancleButton.mas_bottom); + }]; + [self.cancleButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.mas_equalTo(self); + make.height.mas_equalTo(30); + make.width.mas_equalTo(50); + }]; + [self.sureButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.top.mas_equalTo(self); + make.height.mas_equalTo(30); + make.width.mas_equalTo(50); + }]; +} + +#pragma mark - Event +- (void)onClickCancelButton:(UIButton *)sender { + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineUserInfoDateView:didClickCancleButton:)]) { + [self.delegate xPMineUserInfoDateView:self didClickCancleButton:sender]; + } +} + +- (void)onClickSureButton:(UIButton *)sender { + NSDate * date = self.datePicker.date; + NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; + NSCalendarUnit unit = NSCalendarUnitYear | NSCalendarUnitMonth + | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond; + NSDate * nowDate = [NSDate date]; + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineUserInfoDateView:didClickSureButton:)]) { + NSTimeZone *timeZone= [NSTimeZone systemTimeZone]; + NSInteger seconds= [timeZone secondsFromGMTForDate:date]; + NSDate *newDate= [date dateByAddingTimeInterval:seconds]; + NSString *dateStr = [self.dateFormatter stringFromDate:newDate]; + [self.delegate xPMineUserInfoDateView:self didClickSureButton:dateStr]; + } +} + +#pragma mark - Getters And Setters +- (void)setTime:(NSTimeInterval)time { + _time = time; + NSDate *date = [NSDate dateWithTimeIntervalSince1970:time]; + self.datePicker.date = date; +} +- (UIButton *)cancleButton { + if (!_cancleButton) { + _cancleButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_cancleButton setTitle:@"取消" forState:UIControlStateNormal]; + [_cancleButton addTarget:self action:@selector(onClickCancelButton:) forControlEvents:UIControlEventTouchUpInside]; + _cancleButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_cancleButton setTitleColor:[ThemeColor secondTextColor] forState:UIControlStateNormal]; + } + return _cancleButton; +} + +- (UIButton *)sureButton { + if (!_sureButton) { + _sureButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_sureButton setTitle:@"确定" forState:UIControlStateNormal]; + [_sureButton addTarget:self action:@selector(onClickSureButton:) forControlEvents:UIControlEventTouchUpInside]; + _sureButton.titleLabel.font = [UIFont systemFontOfSize:14]; + [_sureButton setTitleColor:[ThemeColor mainTextColor] forState:UIControlStateNormal]; + } + return _sureButton; +} + +- (NSDateFormatter *)dateFormatter { + if (!_dateFormatter) { + _dateFormatter = [[NSDateFormatter alloc] init]; + _dateFormatter.dateFormat = @"YYYY-MM-dd"; + } + return _dateFormatter; +} + +- (UIDatePicker *)datePicker { + if (!_datePicker){ + _datePicker = [[UIDatePicker alloc] init]; + _datePicker.datePickerMode = UIDatePickerModeDate; + NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"zh_CN"]; + _datePicker.locale = locale; + _datePicker.layer.cornerRadius = 5; + _datePicker.layer.masksToBounds = YES; + if (@available(iOS 13.4, *)) { + _datePicker.preferredDatePickerStyle = UIDatePickerStyleWheels; + } + NSDate *date = [self.dateFormatter dateFromString:@"2000-07-01"]; + _datePicker.date = date; + _datePicker.backgroundColor = [UIColor whiteColor]; + } + return _datePicker; +} + +@end