From a2de9505ee5e0bbc0328877c9d224225a0fb63c1 Mon Sep 17 00:00:00 2001 From: lianxiang <13052344590@163.com> Date: Tue, 11 Sep 2018 23:05:15 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E9=A2=98=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GIGA.xcodeproj/project.pbxproj | 34 +++ .../xcdebugger/Breakpoints_v2.xcbkptlist | 18 ++ .../btn_slider_thumb.imageset/Contents.json | 22 ++ .../btn_slider_thumb@2x.png | Bin 0 -> 4839 bytes .../btn_slider_thumb@3x.png | Bin 0 -> 11064 bytes .../ceshi_number.imageset/Contents.json | 18 ++ .../ceshi_number.imageset/ceshi_number@2x.png | Bin 0 -> 1629 bytes .../ceshi_number.imageset/ceshi_number@3x.png | Bin 0 -> 2530 bytes GIGA/Category/UIColor+HexColor.h | 17 ++ GIGA/Category/UIColor+HexColor.m | 27 ++ GIGA/Common/GiGaNetTool/GiGaAPIResult.m | 6 +- .../Mask/Controller/GiGaFlingCommitVC.m | 2 + .../Controller/GiGaMaskTaskViewController.m | 24 +- .../Exercises/Controller/GiGaQuestionVC.m | 239 +++++++++--------- .../Mask/Exercises/Model/ExercisesModel.h | 38 +++ .../Mask/Exercises/Model/ExercisesModel.m | 16 ++ .../Mask/Exercises/View/GIGaQuestionSlider.h | 21 ++ .../Mask/Exercises/View/GIGaQuestionSlider.m | 115 +++++++++ .../Mask/Exercises/View/GiGaAnswerViewCell.h | 14 + .../Mask/Exercises/View/GiGaAnswerViewCell.m | 24 ++ .../Exercises/View/GiGaAnswerViewCell.xib | 54 ++++ .../Mask/Exercises/View/MaskQuestionView.h | 24 ++ .../Mask/Exercises/View/MaskQuestionView.m | 121 +++++++++ .../Mask/View/MaskTimeCircularProgressView.m | 9 +- .../Mask/View/MaskViewBootomWaringView.m | 4 +- 25 files changed, 711 insertions(+), 136 deletions(-) create mode 100644 GIGA/Assets.xcassets/maskTime/btn_slider_thumb.imageset/Contents.json create mode 100644 GIGA/Assets.xcassets/maskTime/btn_slider_thumb.imageset/btn_slider_thumb@2x.png create mode 100644 GIGA/Assets.xcassets/maskTime/btn_slider_thumb.imageset/btn_slider_thumb@3x.png create mode 100644 GIGA/Assets.xcassets/maskTime/ceshi_number.imageset/Contents.json create mode 100644 GIGA/Assets.xcassets/maskTime/ceshi_number.imageset/ceshi_number@2x.png create mode 100644 GIGA/Assets.xcassets/maskTime/ceshi_number.imageset/ceshi_number@3x.png create mode 100644 GIGA/Category/UIColor+HexColor.h create mode 100644 GIGA/Category/UIColor+HexColor.m create mode 100644 GIGA/Modules/Mask/Exercises/Model/ExercisesModel.h create mode 100644 GIGA/Modules/Mask/Exercises/Model/ExercisesModel.m create mode 100644 GIGA/Modules/Mask/Exercises/View/GIGaQuestionSlider.h create mode 100644 GIGA/Modules/Mask/Exercises/View/GIGaQuestionSlider.m create mode 100644 GIGA/Modules/Mask/Exercises/View/GiGaAnswerViewCell.h create mode 100644 GIGA/Modules/Mask/Exercises/View/GiGaAnswerViewCell.m create mode 100644 GIGA/Modules/Mask/Exercises/View/GiGaAnswerViewCell.xib create mode 100644 GIGA/Modules/Mask/Exercises/View/MaskQuestionView.h create mode 100644 GIGA/Modules/Mask/Exercises/View/MaskQuestionView.m diff --git a/GIGA.xcodeproj/project.pbxproj b/GIGA.xcodeproj/project.pbxproj index a2c8d1a..16d6871 100644 --- a/GIGA.xcodeproj/project.pbxproj +++ b/GIGA.xcodeproj/project.pbxproj @@ -70,6 +70,10 @@ 836EE5D42136454500F0ABB2 /* RegistGetSMSCodeRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 836EE5D32136454500F0ABB2 /* RegistGetSMSCodeRequest.m */; }; 836EE5D7213645E300F0ABB2 /* GiGaBaseAPiRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 836EE5D6213645E300F0ABB2 /* GiGaBaseAPiRequest.m */; }; 836EE5DA2136716100F0ABB2 /* NSTimer+Convenience.m in Sources */ = {isa = PBXBuildFile; fileRef = 836EE5D82136716000F0ABB2 /* NSTimer+Convenience.m */; }; + 83773FBC214769230014EE4C /* ExercisesModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 83773FBB214769230014EE4C /* ExercisesModel.m */; }; + 83773FBF214791E10014EE4C /* GIGaQuestionSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = 83773FBE214791E10014EE4C /* GIGaQuestionSlider.m */; }; + 83773FC221479FED0014EE4C /* UIColor+HexColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 83773FC121479FED0014EE4C /* UIColor+HexColor.m */; }; + 83773FC52147A5CC0014EE4C /* MaskQuestionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 83773FC42147A5CC0014EE4C /* MaskQuestionView.m */; }; 83835BA0212E43BD001480F2 /* GiGaMasssagesVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 83835B9F212E43BD001480F2 /* GiGaMasssagesVC.m */; }; 83835BA7212E4748001480F2 /* MAssaageCenterCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 83835BA5212E4748001480F2 /* MAssaageCenterCell.m */; }; 83835BA8212E4748001480F2 /* MAssaageCenterCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 83835BA6212E4748001480F2 /* MAssaageCenterCell.xib */; }; @@ -102,6 +106,8 @@ 83A22718212ABDFF00B3E75C /* GiGaBlockButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 83A22717212ABDFF00B3E75C /* GiGaBlockButton.m */; }; 83A2271F212AC8C100B3E75C /* GiGaUserLoginVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 83A2271D212AC8C100B3E75C /* GiGaUserLoginVC.m */; }; 83A22720212AC8C100B3E75C /* GiGaUserLoginVC.xib in Resources */ = {isa = PBXBuildFile; fileRef = 83A2271E212AC8C100B3E75C /* GiGaUserLoginVC.xib */; }; + 83BDC0582147B89900E74E0D /* GiGaAnswerViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 83BDC0562147B89900E74E0D /* GiGaAnswerViewCell.m */; }; + 83BDC0592147B89900E74E0D /* GiGaAnswerViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 83BDC0572147B89900E74E0D /* GiGaAnswerViewCell.xib */; }; 83BFAE67213CCF10004EF801 /* GiGaMineUserViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 83BFAE65213CCF10004EF801 /* GiGaMineUserViewCell.m */; }; 83BFAE68213CCF10004EF801 /* GiGaMineUserViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 83BFAE66213CCF10004EF801 /* GiGaMineUserViewCell.xib */; }; 83BFAE6C213CD0E3004EF801 /* GiGaMineInfoViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 83BFAE6A213CD0E3004EF801 /* GiGaMineInfoViewCell.m */; }; @@ -242,6 +248,14 @@ 836EE5D6213645E300F0ABB2 /* GiGaBaseAPiRequest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GiGaBaseAPiRequest.m; sourceTree = ""; }; 836EE5D82136716000F0ABB2 /* NSTimer+Convenience.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSTimer+Convenience.m"; sourceTree = ""; }; 836EE5D92136716000F0ABB2 /* NSTimer+Convenience.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSTimer+Convenience.h"; sourceTree = ""; }; + 83773FBA214769230014EE4C /* ExercisesModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ExercisesModel.h; sourceTree = ""; }; + 83773FBB214769230014EE4C /* ExercisesModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ExercisesModel.m; sourceTree = ""; }; + 83773FBD214791E10014EE4C /* GIGaQuestionSlider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GIGaQuestionSlider.h; sourceTree = ""; }; + 83773FBE214791E10014EE4C /* GIGaQuestionSlider.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GIGaQuestionSlider.m; sourceTree = ""; }; + 83773FC021479FED0014EE4C /* UIColor+HexColor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UIColor+HexColor.h"; sourceTree = ""; }; + 83773FC121479FED0014EE4C /* UIColor+HexColor.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIColor+HexColor.m"; sourceTree = ""; }; + 83773FC32147A5CC0014EE4C /* MaskQuestionView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MaskQuestionView.h; sourceTree = ""; }; + 83773FC42147A5CC0014EE4C /* MaskQuestionView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MaskQuestionView.m; sourceTree = ""; }; 83835B9E212E43BD001480F2 /* GiGaMasssagesVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GiGaMasssagesVC.h; sourceTree = ""; }; 83835B9F212E43BD001480F2 /* GiGaMasssagesVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GiGaMasssagesVC.m; sourceTree = ""; }; 83835BA4212E4748001480F2 /* MAssaageCenterCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MAssaageCenterCell.h; sourceTree = ""; }; @@ -303,6 +317,9 @@ 83A2271C212AC8C100B3E75C /* GiGaUserLoginVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GiGaUserLoginVC.h; sourceTree = ""; }; 83A2271D212AC8C100B3E75C /* GiGaUserLoginVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GiGaUserLoginVC.m; sourceTree = ""; }; 83A2271E212AC8C100B3E75C /* GiGaUserLoginVC.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GiGaUserLoginVC.xib; sourceTree = ""; }; + 83BDC0552147B89900E74E0D /* GiGaAnswerViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GiGaAnswerViewCell.h; sourceTree = ""; }; + 83BDC0562147B89900E74E0D /* GiGaAnswerViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GiGaAnswerViewCell.m; sourceTree = ""; }; + 83BDC0572147B89900E74E0D /* GiGaAnswerViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GiGaAnswerViewCell.xib; sourceTree = ""; }; 83BFAE64213CCF10004EF801 /* GiGaMineUserViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GiGaMineUserViewCell.h; sourceTree = ""; }; 83BFAE65213CCF10004EF801 /* GiGaMineUserViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GiGaMineUserViewCell.m; sourceTree = ""; }; 83BFAE66213CCF10004EF801 /* GiGaMineUserViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GiGaMineUserViewCell.xib; sourceTree = ""; }; @@ -644,6 +661,8 @@ 8340BF9D213E3846008F22E4 /* SHineLabel.m */, 8345C13421414D3B00051717 /* NSString+Unicode.h */, 8345C13521414D3B00051717 /* NSString+Unicode.m */, + 83773FC021479FED0014EE4C /* UIColor+HexColor.h */, + 83773FC121479FED0014EE4C /* UIColor+HexColor.m */, ); path = Category; sourceTree = ""; @@ -844,6 +863,8 @@ children = ( 83835BCE212E8B9C001480F2 /* GiGaQuestionModel.h */, 83835BCF212E8B9C001480F2 /* GiGaQuestionModel.m */, + 83773FBA214769230014EE4C /* ExercisesModel.h */, + 83773FBB214769230014EE4C /* ExercisesModel.m */, ); path = Model; sourceTree = ""; @@ -853,6 +874,13 @@ children = ( 83835BC8212E8045001480F2 /* GIGAQuetionView.h */, 83835BC9212E8045001480F2 /* GIGAQuetionView.m */, + 83773FBD214791E10014EE4C /* GIGaQuestionSlider.h */, + 83773FBE214791E10014EE4C /* GIGaQuestionSlider.m */, + 83773FC32147A5CC0014EE4C /* MaskQuestionView.h */, + 83773FC42147A5CC0014EE4C /* MaskQuestionView.m */, + 83BDC0552147B89900E74E0D /* GiGaAnswerViewCell.h */, + 83BDC0562147B89900E74E0D /* GiGaAnswerViewCell.m */, + 83BDC0572147B89900E74E0D /* GiGaAnswerViewCell.xib */, ); path = View; sourceTree = ""; @@ -1118,6 +1146,7 @@ 838388C4212F934400D14C53 /* pomodoSound.m4a in Resources */, 83BFAE78213CDE91004EF801 /* GiGaSettingsViewCell.xib in Resources */, 83346AC1212BB50A0054D597 /* PassWordResetVC.xib in Resources */, + 83BDC0592147B89900E74E0D /* GiGaAnswerViewCell.xib in Resources */, 83346AD1212BF5B70054D597 /* useragreement.html in Resources */, 83BFAE68213CCF10004EF801 /* GiGaMineUserViewCell.xib in Resources */, 8340BFA9213E65CA008F22E4 /* GIGACommonLocalizabe.strings in Resources */, @@ -1233,6 +1262,8 @@ 838500DC2137F3F7003514A3 /* GiGaAttributedLabel.m in Sources */, 83BFAE7B213D3F3A004EF801 /* MaskTimeCircularProgressView.m in Sources */, 8314D2112133ABE500B458BF /* WeiIXinApiManager.m in Sources */, + 83BDC0582147B89900E74E0D /* GiGaAnswerViewCell.m in Sources */, + 83773FC52147A5CC0014EE4C /* MaskQuestionView.m in Sources */, 83835BCA212E8045001480F2 /* GIGAQuetionView.m in Sources */, 8361B3CE212155C200238FEB /* ViewController.m in Sources */, 8361B4382121847600238FEB /* UINavigationBar+Custom.m in Sources */, @@ -1250,14 +1281,17 @@ 83835BA0212E43BD001480F2 /* GiGaMasssagesVC.m in Sources */, 8357ADCD2123C091000816F2 /* GiGaNetManager.m in Sources */, 838388D4212FB7D700D14C53 /* JXTAlertView.m in Sources */, + 83773FC221479FED0014EE4C /* UIColor+HexColor.m in Sources */, 835060A9212D38EE007E6220 /* GiGaStartAdView.m in Sources */, 83928FFA2134D8F60077D2E8 /* GiGaFlyingCommitInputView.m in Sources */, 838388D3212FB7D700D14C53 /* JXTAlertController.m in Sources */, 833DA7762122A62000A5C614 /* GiGaMaskTaskViewController.m in Sources */, 836EE5D7213645E300F0ABB2 /* GiGaBaseAPiRequest.m in Sources */, + 83773FBC214769230014EE4C /* ExercisesModel.m in Sources */, 83835BD0212E8B9C001480F2 /* GiGaQuestionModel.m in Sources */, 83835BAF212E4FCD001480F2 /* MessageListViewCell.m in Sources */, 8361B3D9212155C300238FEB /* main.m in Sources */, + 83773FBF214791E10014EE4C /* GIGaQuestionSlider.m in Sources */, 835060A2212D1225007E6220 /* GiGaMeViewController.m in Sources */, 8361B3CB212155C200238FEB /* AppDelegate.m in Sources */, 838388C8212F9C4200D14C53 /* GiGaLocalNotificationManager.m in Sources */, diff --git a/GIGA.xcworkspace/xcuserdata/lianxiang.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/GIGA.xcworkspace/xcuserdata/lianxiang.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index ed9a9b4..7cb5a4d 100644 --- a/GIGA.xcworkspace/xcuserdata/lianxiang.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/GIGA.xcworkspace/xcuserdata/lianxiang.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -2,4 +2,22 @@ + + + + + + diff --git a/GIGA/Assets.xcassets/maskTime/btn_slider_thumb.imageset/Contents.json b/GIGA/Assets.xcassets/maskTime/btn_slider_thumb.imageset/Contents.json new file mode 100644 index 0000000..dfb5d15 --- /dev/null +++ b/GIGA/Assets.xcassets/maskTime/btn_slider_thumb.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "btn_slider_thumb@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "btn_slider_thumb@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/GIGA/Assets.xcassets/maskTime/btn_slider_thumb.imageset/btn_slider_thumb@2x.png b/GIGA/Assets.xcassets/maskTime/btn_slider_thumb.imageset/btn_slider_thumb@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e006dca488b51c85abfcd29d5d6a3455855bcb23 GIT binary patch literal 4839 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 PuCPEF`s$Sr?IZpNLfBIF literal 0 HcmV?d00001 diff --git a/GIGA/Assets.xcassets/maskTime/btn_slider_thumb.imageset/btn_slider_thumb@3x.png b/GIGA/Assets.xcassets/maskTime/btn_slider_thumb.imageset/btn_slider_thumb@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..73305785c9e608f3c729d2cd631959f8dee059ea GIT binary patch literal 11064 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 a+#SLyP$2EI5oi<^Oh!Ucyi(LC=>GwD18I){ literal 0 HcmV?d00001 diff --git a/GIGA/Assets.xcassets/maskTime/ceshi_number.imageset/Contents.json b/GIGA/Assets.xcassets/maskTime/ceshi_number.imageset/Contents.json new file mode 100644 index 0000000..f80543f --- /dev/null +++ b/GIGA/Assets.xcassets/maskTime/ceshi_number.imageset/Contents.json @@ -0,0 +1,18 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "ceshi_number@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "ceshi_number@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/GIGA/Assets.xcassets/maskTime/ceshi_number.imageset/ceshi_number@2x.png b/GIGA/Assets.xcassets/maskTime/ceshi_number.imageset/ceshi_number@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2494e50071994f075beab14ea32568adfc625f13 GIT binary patch literal 1629 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 literal 0 HcmV?d00001 diff --git a/GIGA/Category/UIColor+HexColor.h b/GIGA/Category/UIColor+HexColor.h new file mode 100644 index 0000000..04f22eb --- /dev/null +++ b/GIGA/Category/UIColor+HexColor.h @@ -0,0 +1,17 @@ +// +// UIColor+HexColor.h +// GIGA +// +// Created by lianxiang on 2018/9/11. +// Copyright © 2018年 com.giga.ios. All rights reserved. +// + +#import + +@interface UIColor (HexColor) + ++ (UIColor *)colorWithHex:(long)hexColor; + ++ (UIColor *)colorWithHex:(long)hexColor alpha:(CGFloat)alpha; + +@end diff --git a/GIGA/Category/UIColor+HexColor.m b/GIGA/Category/UIColor+HexColor.m new file mode 100644 index 0000000..128f386 --- /dev/null +++ b/GIGA/Category/UIColor+HexColor.m @@ -0,0 +1,27 @@ +// +// UIColor+HexColor.m +// GIGA +// +// Created by lianxiang on 2018/9/11. +// Copyright © 2018年 com.giga.ios. All rights reserved. +// + +#import "UIColor+HexColor.h" + +@implementation UIColor (HexColor) + ++ (UIColor *)colorWithHex:(long)hexColor { + CGFloat red = ((CGFloat)((hexColor & 0xFF0000) >> 16))/255.0f; + CGFloat green = ((CGFloat)((hexColor & 0xFF00) >> 8))/255.0f; + CGFloat blue = ((CGFloat)(hexColor & 0xFF))/255.0f; + return [UIColor colorWithRed:red green:green blue:blue alpha:1.0f]; +} + ++ (UIColor *)colorWithHex:(long)hexColor alpha:(CGFloat)alpha{ + CGFloat red = ((CGFloat)((hexColor & 0xFF0000) >> 16))/255.0f; + CGFloat green = ((CGFloat)((hexColor & 0xFF00) >> 8))/255.0f; + CGFloat blue = ((CGFloat)(hexColor & 0xFF))/255.0f; + return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; +} + +@end diff --git a/GIGA/Common/GiGaNetTool/GiGaAPIResult.m b/GIGA/Common/GiGaNetTool/GiGaAPIResult.m index 20f5739..af1a487 100644 --- a/GIGA/Common/GiGaNetTool/GiGaAPIResult.m +++ b/GIGA/Common/GiGaNetTool/GiGaAPIResult.m @@ -23,9 +23,9 @@ if (dic && ![dic isKindOfClass:[NSNull class]]) { self.code = [[dic objectForKey:@"code"] integerValue]; self.message = [dic objectForKey:@"msg"]; - NSDictionary *data = [[dic objectForKey:@"result"] objectForKey:@"data"]; - self.dic = data; - +// NSDictionary *data = [[dic objectForKey:@"result"] objectForKey:@"data"]; + self.dic = dic; + }else{ self.message = @"请求异常"; self.dic = nil; diff --git a/GIGA/Modules/Mask/Controller/GiGaFlingCommitVC.m b/GIGA/Modules/Mask/Controller/GiGaFlingCommitVC.m index 619672e..ac2a8ac 100644 --- a/GIGA/Modules/Mask/Controller/GiGaFlingCommitVC.m +++ b/GIGA/Modules/Mask/Controller/GiGaFlingCommitVC.m @@ -111,11 +111,13 @@ [[LXDanMuManager shareInstance] start]; //socket [self connetction]; + //显示隐藏输入框 BOOL isUserLogin = [GiGaUserDefault isUserLogin]; if (!isUserLogin) { self.commitInputView.hidden = YES; } + } -(void)connetction{ diff --git a/GIGA/Modules/Mask/Controller/GiGaMaskTaskViewController.m b/GIGA/Modules/Mask/Controller/GiGaMaskTaskViewController.m index c21f520..ad18546 100644 --- a/GIGA/Modules/Mask/Controller/GiGaMaskTaskViewController.m +++ b/GIGA/Modules/Mask/Controller/GiGaMaskTaskViewController.m @@ -205,7 +205,6 @@ self.swipeGaurdimagView.hidden = YES; self.startMaskButton.hidden = YES; - self.startTestButton.hidden = YES; [self.view layoutIfNeeded]; [UIView animateWithDuration:1.0 animations:^{ [self.maskImageView mas_updateConstraints:^(MASConstraintMaker *make) { @@ -230,7 +229,6 @@ self.cicleProgressView.hidden = YES; self.swipeGaurdimagView.hidden = NO; self.startMaskButton.hidden = NO; - self.startTestButton.hidden = NO; [self.view layoutIfNeeded]; [UIView animateWithDuration:1.0 animations:^{ @@ -368,7 +366,6 @@ MPMediaItemPropertyArtwork:arwork }; [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:dic]; - [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; } @@ -409,21 +406,20 @@ #pragma mark 开始测试 -(void)testBtnAcion:(UIButton *)btn{ -// [self createInputView]; -// return; + - BOOL isUserLogin = [GiGaUserDefault isUserLogin]; +// BOOL isUserLogin = [GiGaUserDefault isUserLogin]; +// +// if (isUserLogin) { - if (isUserLogin) { - GiGaQuestionVC *questionVC = [[GiGaQuestionVC alloc] init]; [self.navigationController pushViewController:questionVC animated:YES]; - }else{ - GiGaUserLoginVC *userlogInVC= [[GiGaUserLoginVC alloc] init]; - GiGaBaseNavViewController *baseNav = [[GiGaBaseNavViewController alloc] initWithRootViewController:userlogInVC]; - [self presentViewController:baseNav animated:YES completion:nil]; - } +// }else{ +// GiGaUserLoginVC *userlogInVC= [[GiGaUserLoginVC alloc] init]; +// GiGaBaseNavViewController *baseNav = [[GiGaBaseNavViewController alloc] initWithRootViewController:userlogInVC]; +// [self presentViewController:baseNav animated:YES completion:nil]; +// } } -(void)addNotify{ @@ -532,7 +528,7 @@ [self.view addSubview:self.waringView]; [UIView animateWithDuration:0.4 animations:^{ - self.waringView.frame = CGRectMake(0,CGRectGetMaxY(self.view.frame) - 60 - PhoneX_BottomMargin, self.view.frame.size.width, 60); + self.waringView.frame = CGRectMake(0,CGRectGetMaxY(self.view.frame) - 44 - PhoneX_BottomMargin, self.view.frame.size.width, 44); }]; [self.waringView showView]; } diff --git a/GIGA/Modules/Mask/Exercises/Controller/GiGaQuestionVC.m b/GIGA/Modules/Mask/Exercises/Controller/GiGaQuestionVC.m index c9d9d01..d8c1df6 100644 --- a/GIGA/Modules/Mask/Exercises/Controller/GiGaQuestionVC.m +++ b/GIGA/Modules/Mask/Exercises/Controller/GiGaQuestionVC.m @@ -7,18 +7,24 @@ // #import "GiGaQuestionVC.h" -#import "GIGAQuetionView.h" -#import "GiGaQuestionModel.h" #import "Masonry.h" +#import "GiGaBaseAPiRequest.h" +#import "GiGaNetManager.h" +#import "GIGaQuestionSlider.h" +#import "MaskQuestionView.h" +#import "ExercisesModel.h" @interface GiGaQuestionVC () -@property (nonatomic,weak) GIGAQuetionView *questionView; +@property (nonatomic,weak) MaskQuestionView *questionView; @property (nonatomic,assign) NSInteger page; @property (nonatomic,strong) NSMutableArray *questonArray; -@property (nonatomic,strong) GiGaQuestionModel *currentModel; +@property (nonatomic,strong) ExercisesModel *currentModel; + @property (nonatomic,strong) UILabel *questionlabel; @property (nonatomic,strong) UIButton *nextBtn; +@property (nonatomic,strong) UIButton *preBtn; + @end @implementation GiGaQuestionVC @@ -28,11 +34,81 @@ [super viewDidLoad]; // self.title = @"测试肤质"; _page = 1; - //模拟服务器数据 - [self initControls]; - [self setquestionArray]; - [self getQuestionsInfo]; + // + [self loadRequestQuestions]; + + //[self initUI]; + +} +-(void)initUI{ + + UIButton *numberBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + [numberBtn setBackgroundImage:[UIImage imageNamed:@"ceshi_number"] forState:UIControlStateNormal]; + NSAttributedString *numbertitle = [[NSAttributedString alloc] initWithString:@"1" attributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSize:18],NSForegroundColorAttributeName:[UIColor whiteColor]}]; + + [numberBtn setAttributedTitle:numbertitle forState:UIControlStateNormal]; + [self.view addSubview:numberBtn]; + + UILabel *titleLabel = [[UILabel alloc] init]; + titleLabel.text = @"悄悄地告诉你小优的年龄区间是?"; + titleLabel.font = [UIFont fontWithName:GIGA_FONTBOLD size:16]; + titleLabel.textColor = GIGARGB(63, 63, 63, 1); + [self.view addSubview:titleLabel]; + + UILabel *descLabel = [[UILabel alloc] init]; + descLabel.text = @"精准的选择,让小优更好的为您挑选最符合您的肤质的面膜"; + descLabel.font = [UIFont fontWithName:GIGA_FONTNAME size:12]; + descLabel.textColor = GIGARGB(208, 208, 208, 1); + descLabel.numberOfLines = 0; + descLabel.textAlignment = NSTextAlignmentCenter; + + [self.view addSubview:descLabel]; + + [numberBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.size.mas_equalTo(CGSizeMake(31, 31)); + make.top.mas_equalTo(self.view.mas_top).offset(112 + PhoneX_TopMargin); + make.left.mas_equalTo(self.view.mas_left).offset(46); + + }]; + + [titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + + make.left.mas_equalTo(numberBtn.mas_right).offset(12); + make.centerY.mas_equalTo(numberBtn.mas_centerY); + make.right.mas_equalTo(self.view.mas_right).offset(-53); + + }]; + + [descLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(numberBtn.mas_right).offset(12); + make.top.mas_equalTo(titleLabel.mas_bottom).offset(20); + make.right.mas_equalTo(self.view.mas_right).offset(-89); + + }]; + + //选择题view + NSArray *titles = @[@"hahah",@"呵呵呵呵",@"哦哦",@"有有u哟哦",@"呵呵呵呵"]; + NSMutableArray *tit = [NSMutableArray new]; + ExercisesModel *model = self.questonArray[0]; + NSArray *modeA = model.answerList; + for (NSDictionary *mode in modeA){ + [tit addObject:mode[@"answer"]]; + } + titles = tit; + MaskQuestionView *questionView = [[MaskQuestionView alloc] initQuestionView:CGRectMake(0,248, self.view.frame.size.width,212) style:MaskQuetionViewStleSliderNormal titles:titles]; + + questionView.backgroundColor = [UIColor redColor]; + [self.view addSubview:questionView]; + self.questionView = questionView; + + +} + +-(void)updateValue:(UISlider *)slider{ + NSLog(@"value%f",slider.value); + GILog(@"formatvalue:%.2f",slider.value*60); + } -(NSMutableArray *)questonArray{ @@ -42,19 +118,24 @@ return _questonArray; } --(void)setquestionArray{ - NSArray *array = @[ - @{@"questionid" : @"1", @"totalCount" : @"5", @"question" : @"如果昨天是明天的话就好了,这样今天就周五了。真实的今天可能是星期几?", @"questiontype" : @"1", @"questiontype_text" : @"单选题", @"questionselectnumber" : @"3", @"questiondescribe" : @"星期三:理想今天是星期五,昨天是星期四,真实明天是理想的昨天是星期四,真实的今天是星期三。\n星期日:理想今天是星期五,明天是星期六,真实昨天是理想的明天是星期六,真实的今天是星期日。", @"trueanswer" : @"A", @"userAnswer" : @[], @"tkselect" : @[@"A:星期三星期三星期三星期三星期三星期三星期三", @"B:星期四", @"C:星期五星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三星期三"]}, - @{@"questionid" : @"2", @"totalCount" : @"5", @"question" : @"这里是问题,这道题的答案是AC。这里是问题,这道题的答案是AC。这里是问题,这道题的答案是AC。", @"questiontype" : @"1", @"questiontype_text" : @"多选题", @"questionselectnumber" : @"5", @"questiondescribe" : @"这里是答案解析,这里可以很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长的。", @"trueanswer" : @"AC", @"userAnswer" : @[], @"tkselect" : @[@"A:这个选项是正确的。这个选项是正确的。这个选项是正确的。", @"B:这个选项是错误的。这个选项是错误的。这个选项是错误的。", @"C:这个选项是正确的。这个选项是正确的。这个选项是正确的。", @"D:这个选项是错误的。这个选项是错误的。这个选项是错误的。", @"E:这个选项是错误的。这个选项是错误的。这个选项是错误的。"]}, - @{@"questionid" : @"3", @"totalCount" : @"5", @"question" : @"以下哪个牌子不是化妆品?", @"questiontype" : @"1", @"questiontype_text" : @"单选题", @"questionselectnumber" : @"3", @"questiondescribe" : @"化妆品,化妆品化妆品化妆品化妆品化妆品化妆品化妆品。", @"trueanswer" : @"A", @"userAnswer" : @[], @"tkselect" : @[@"A:化妆品", @"B:化妆品", @"C:星期五"]}, - @{@"questionid" : @"4", @"totalCount" : @"5", @"question" : @"如果昨天是明天的话就好了,这样今天就周五了。真实的今天可能是星期几?", @"questiontype" : @"1", @"questiontype_text" : @"单选题", @"questionselectnumber" : @"3", @"questiondescribe" : @"真实昨天是理想的明天是星期六,真实的今天是星期日?", @"trueanswer" : @"A", @"userAnswer" : @[], @"tkselect" : @[@"A:星三", @"B:星", @"C:期"]}, - @{@"questionid" : @"5", @"totalCount" : @"5", @"question" : @"星期几?", @"questiontype" : @"1", @"questiontype_text" : @"单选题", @"questionselectnumber" : @"3", @"questiondescribe" : @"星期三:理想今天是星期五,昨天是星期四,真实明天是理想的昨天是星期四,真实的今天是星期三。\n星期日:理想今天是星期五,明天是星期六,真实昨天是理想的明天是星期六,真实的今天是星期日。", @"trueanswer" : @"A", @"userAnswer" : @[], @"tkselect" : @[@"A:三", @"B:四", @"C:五"]}, - - ]; - for (NSDictionary *dic in array) { - GiGaQuestionModel *model = [[GiGaQuestionModel alloc] initWithDictionary:dic error:nil]; - [self.questonArray addObject:model]; - } +-(void)loadRequestQuestions{ + + NSDictionary *params = @{}; + GiGaBaseAPiRequest *request = [GiGaBaseAPiRequest initWithRequestPath:@"activity/maskquestion/v1/list" method:RequestPostMethod parms:params]; + + [request requstDataWithResult:^(GiGaAPIResult *result) { + if (result.success) { + NSLog(@"result:%@",result.dic); + NSArray *list = result.dic[@"list"]; + NSDictionary *answer = list[0]; + for (NSDictionary *answerDic in list) { + ExercisesModel *model = [[ExercisesModel alloc] initWithDictionary:answerDic error:nil]; + [self.questonArray addObject:model]; + + } + [self initUI]; + } + }]; } @@ -62,109 +143,37 @@ -(void)getQuestionsInfo{ _currentModel = _questonArray[_page - 1]; - [self reloadViews]; } #pragma mark 刷新题目 -(void)reloadViews{ //刷新问题相关数据 - NSString *questionlabelText = [NSString stringWithFormat:@"%@.%@", _currentModel.questionid, _currentModel.question]; - NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; - [paragraphStyle setLineSpacing:4.0f]; - NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:questionlabelText]; - NSDictionary *attrs =@{NSFontAttributeName:[UIFont systemFontOfSize:18]}; - [attributedString setAttributes:attrs range:NSMakeRange(0, 2)]; - - _questionlabel.attributedText = attributedString; +// NSString *questionlabelText = [NSString stringWithFormat:@"%@.%@", _currentModel.questionid, _currentModel.question]; +// NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; +// [paragraphStyle setLineSpacing:4.0f]; +// NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:questionlabelText]; +// NSDictionary *attrs =@{NSFontAttributeName:[UIFont systemFontOfSize:18]}; +// [attributedString setAttributes:attrs range:NSMakeRange(0, 2)]; +// +// _questionlabel.attributedText = attributedString; [self.view layoutIfNeeded];//必加 - //刷新答案相关数据 - [_questionView reloadViewWithFrame:CGRectMake(30, CGRectGetMaxY(_questionlabel.frame) + 15, KMainW - 30*2, 0) style:[_currentModel.questiontype intValue] - 1 answerArray:_currentModel.tkselect userAnswers:_currentModel.userAnswer]; +// //刷新答案相关数据 +// [_questionView reloadViewWithFrame:CGRectMake(30, CGRectGetMaxY(_questionlabel.frame) + 15, KMainW - 30*2, 0) style:[_currentModel.questiontype intValue] - 1 answerArray:_currentModel.tkselect userAnswers:_currentModel.userAnswer]; } -#pragma mark 创建控件 --(void)initControls{ - - //顶部 - UIImageView *topBackImagiew = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@""]]; - topBackImagiew.backgroundColor = [UIColor lightGrayColor]; - [self.view addSubview:topBackImagiew]; - - [topBackImagiew mas_makeConstraints:^(MASConstraintMaker *make) { - make.width.mas_equalTo(KMainW - 30*2); - make.height.mas_equalTo(140); - make.top.mas_equalTo(self.view.mas_top).offset(100); - make.left.mas_equalTo(self.view.mas_left).offset(30); - }]; - UILabel *desLabel = [[UILabel alloc] init]; - desLabel.text = @"通过测试可以得知您是什么肤质,有助于选择更适合的面膜"; - desLabel.font = [UIFont systemFontOfSize:22]; - desLabel.numberOfLines = 0; - [desLabel sizeToFit]; - [topBackImagiew addSubview:desLabel]; - [desLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.center.mas_equalTo(topBackImagiew.center); - make.width.mas_equalTo(KMainW - 30*2 - 20*2); - - }]; - - //问题标签 - UILabel *questionLabel = [[UILabel alloc] init]; - questionLabel.textColor = GIGAUIColorFromRGBA(0x292929); - questionLabel.font = [UIFont systemFontOfSize:15.f]; - questionLabel.numberOfLines = 0; - [self.view addSubview:questionLabel]; - self.questionlabel = questionLabel; - [self.questionlabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.mas_equalTo(self.view.mas_left).offset(30); - make.top.mas_equalTo(topBackImagiew.mas_bottom).offset(10); - make.right.mas_equalTo(self.view.mas_right).offset(-30); - - }]; - - //选择题view - GIGAQuetionView *questionView = [[GIGAQuetionView alloc] init]; - questionView.backgroundColor = [UIColor lightGrayColor]; - [self.view addSubview:questionView]; - self.questionView = questionView; -// [self.questionView mas_makeConstraints:^(MASConstraintMaker *make) { -// make.top.mas_equalTo(self.questionlabel.mas_bottom).offset(10); -// make.height.mas_equalTo(0); -// make.left.mas_equalTo(self.view.mas_left).offset(30); -// make.right.mas_equalTo(self.view.mas_right).offset(-30); -// }]; - - //下一题 - UIButton *nextBtn = [UIButton buttonWithType:UIButtonTypeCustom]; - nextBtn.backgroundColor = [UIColor purpleColor]; - [nextBtn setTitle:@"下一个" forState:UIControlStateNormal]; - [nextBtn addTarget:self action:@selector(nextBtnAction) forControlEvents:UIControlEventTouchUpInside]; - nextBtn.layer.masksToBounds = YES; - nextBtn.layer.cornerRadius = 2; - [self.view addSubview:nextBtn]; - self.nextBtn = nextBtn; - - - [nextBtn mas_makeConstraints:^(MASConstraintMaker *make) { - make.bottom.mas_equalTo(self.view.mas_bottom).offset(-100); - make.width.mas_equalTo(160); - make.height.mas_equalTo(40); - make.centerX.mas_equalTo(self.view.mas_centerX); - }]; - -} -(void)nextBtnAction{ - if (_page == [_currentModel.totalCount integerValue] ) { - GIGA_ShowToast(@"没有了"); - return; - } - [self saveProgress]; - _page ++ ; - //获取题目信息 - [self getQuestionsInfo]; +// if (_page == [_currentModel.totalCount integerValue] ) { +// GIGA_ShowToast(@"没有了"); +// return; +// } +// [self saveProgress]; +// _page ++ ; +// //获取题目信息 +// [self getQuestionsInfo]; //self.nextBtn.enabled = _page == [_currentModel.totalCount integerValue] ? NO : YES; @@ -172,10 +181,10 @@ #pragma mark -做题记录 -(void)saveProgress{ - NSString *answer = self.questionView.selectAnswer; - NSString *anserNum = self.questionView.qrnum; - NSString *anserid = _currentModel.questionid; - GILog(@"选择答案:%@\n 角标:%@\n 题号:%@",answer,anserNum,anserid); +// NSString *answer = self.questionView.selectAnswer; +// NSString *anserNum = self.questionView.qrnum; +// NSString *anserid = _currentModel.questionid; + // GILog(@"选择答案:%@\n 角标:%@\n 题号:%@",answer,anserNum,anserid); } - (void)didReceiveMemoryWarning { diff --git a/GIGA/Modules/Mask/Exercises/Model/ExercisesModel.h b/GIGA/Modules/Mask/Exercises/Model/ExercisesModel.h new file mode 100644 index 0000000..ecc1d47 --- /dev/null +++ b/GIGA/Modules/Mask/Exercises/Model/ExercisesModel.h @@ -0,0 +1,38 @@ +// +// ExercisesModel.h +// GIGA +// +// Created by lianxiang on 2018/9/11. +// Copyright © 2018年 com.giga.ios. All rights reserved. +// + +#import + +//内层模型 +//@protocol QustionAnswer//内层模型协议 +//@end +@class QustionAnswer; + +@interface QustionAnswer:JSONModel +@property (nonatomic,copy) NSString *answer; +@property (nonatomic,assign) int bsjz; +@property (nonatomic,copy) NSString *createTime; +@property (nonatomic,assign) int dryness; +@property (nonatomic,assign) int fx; + + + +@end + +//外层模型 +@interface ExercisesModel : JSONModel + +@property (nonatomic,strong) NSMutableArray* answerList; +@property (nonatomic,assign) int questionType; +@property (nonatomic,assign) int sortNum; +@property (nonatomic,copy) NSString *remark; +@property (nonatomic,copy) NSString *question; + +@end + + diff --git a/GIGA/Modules/Mask/Exercises/Model/ExercisesModel.m b/GIGA/Modules/Mask/Exercises/Model/ExercisesModel.m new file mode 100644 index 0000000..70cd9f6 --- /dev/null +++ b/GIGA/Modules/Mask/Exercises/Model/ExercisesModel.m @@ -0,0 +1,16 @@ +// +// ExercisesModel.m +// GIGA +// +// Created by lianxiang on 2018/9/11. +// Copyright © 2018年 com.giga.ios. All rights reserved. +// + +#import "ExercisesModel.h" + +@implementation ExercisesModel +//+(JSONKeyMapper *)keyMapper{ +// return [[JSONKeyMapper alloc] initWithModelToJSONDictionary:@{@"id":@"answer_id"}]; +//} + +@end diff --git a/GIGA/Modules/Mask/Exercises/View/GIGaQuestionSlider.h b/GIGA/Modules/Mask/Exercises/View/GIGaQuestionSlider.h new file mode 100644 index 0000000..103a515 --- /dev/null +++ b/GIGA/Modules/Mask/Exercises/View/GIGaQuestionSlider.h @@ -0,0 +1,21 @@ +// +// GIGaQuestionSlider.h +// GIGA +// +// Created by lianxiang on 2018/9/11. +// Copyright © 2018年 com.giga.ios. All rights reserved. +// + +#import +typedef NS_ENUM(NSInteger,GIGaQuestionSliderType) +{ + GIGaQuestionSliderTypeGray = 0,//灰 + GIGaQuestionSliderTypeGradient ,//变色 + + +}; + +@interface GIGaQuestionSlider : UISlider +- (instancetype)initWithFrame:(CGRect)frame type:(GIGaQuestionSliderType)type; + +@end diff --git a/GIGA/Modules/Mask/Exercises/View/GIGaQuestionSlider.m b/GIGA/Modules/Mask/Exercises/View/GIGaQuestionSlider.m new file mode 100644 index 0000000..5f461ac --- /dev/null +++ b/GIGA/Modules/Mask/Exercises/View/GIGaQuestionSlider.m @@ -0,0 +1,115 @@ +// +// GIGaQuestionSlider.m +// GIGA +// +// Created by lianxiang on 2018/9/11. +// Copyright © 2018年 com.giga.ios. All rights reserved. +// + +#import "GIGaQuestionSlider.h" +#import "UIColor+HexColor.h" +@interface GIGaQuestionSlider() + +@end + +@implementation GIGaQuestionSlider + + + +- (instancetype)initWithFrame:(CGRect)frame type:(GIGaQuestionSliderType)type +{ + self = [super initWithFrame:frame]; + if (self) { + + self.minimumValue = 0.0; + self.maximumValue = 1.0; + self.value = 0.5; + + [self creatSubView:type]; + } + return self; +} +-(void)creatSubView:(GIGaQuestionSliderType)type{ + [self thumbimageView]; + + switch (type) { + case GIGaQuestionSliderTypeGray: + { + [self createUI]; + } + break; + case GIGaQuestionSliderTypeGradient: + { + [self creatGradient]; + } + break; + default: + break; + } +} + +-(void)creatGradient{ + self.minimumTrackTintColor=[UIColor clearColor]; + self.maximumTrackTintColor=[UIColor clearColor]; + + NSArray *colorArr = @[(id)[[UIColor colorWithHex:0xFFFFFF] CGColor], + (id)[[UIColor colorWithHex:0xFFF3E4] CGColor], + (id)[[UIColor colorWithHex:0x9A9996] CGColor]]; + NSArray *colorLocationArray = @[@0.0, @0.5, @1]; + CAGradientLayer * gradientLayer = [CAGradientLayer layer]; + gradientLayer.frame = self.bounds; + gradientLayer.masksToBounds = YES; + gradientLayer.cornerRadius = self.frame.size.height /2 ; + gradientLayer.borderWidth = 1; + gradientLayer.borderColor =GIGARGB(215, 215, 215, 1).CGColor; + + [gradientLayer setLocations:colorLocationArray]; + [gradientLayer setColors:colorArr]; + [gradientLayer setStartPoint:CGPointMake(0, 0)]; + [gradientLayer setEndPoint:CGPointMake(1, 0)]; + [self.layer addSublayer:gradientLayer]; +} + + + +-(void)createUI{ + + self.minimumValue = 0.0; + self.maximumValue = 1.0; + self.value = 0.5; + self.minimumTrackTintColor = GIGARGB(216,216, 216, 1); + self.maximumTrackTintColor = GIGARGB(216,216, 216, 1); + +} + +-(CGRect)trackRectForBounds:(CGRect)bounds +{ + bounds.origin.x = bounds.origin.x; + bounds.origin.y = bounds.origin.y; + bounds.size.height = bounds.size.height; + bounds.size.width = bounds.size.width; + return bounds; +} + +-(void)thumbimageView{ + + [self setThumbImage:[self OriginImage:[UIImage imageNamed:@"btn_slider_thumb"] scaleToSize:CGSizeMake(40, 40)] forState:UIControlStateNormal]; + [self setThumbImage:[self OriginImage:[UIImage imageNamed:@"btn_slider_thumb"] scaleToSize:CGSizeMake(40, 40)] forState:UIControlStateHighlighted]; +} + +-(UIImage*) OriginImage:(UIImage*)image scaleToSize:(CGSize)size + +{ + UIGraphicsBeginImageContext(size);//size为CGSize类型,即你所需要的图片尺寸 + [image drawInRect:CGRectMake(0,0, size.width, size.height)]; + + UIImage* scaledImage =UIGraphicsGetImageFromCurrentImageContext(); + + UIGraphicsEndImageContext(); + + return scaledImage; + +} + + +@end diff --git a/GIGA/Modules/Mask/Exercises/View/GiGaAnswerViewCell.h b/GIGA/Modules/Mask/Exercises/View/GiGaAnswerViewCell.h new file mode 100644 index 0000000..74eea07 --- /dev/null +++ b/GIGA/Modules/Mask/Exercises/View/GiGaAnswerViewCell.h @@ -0,0 +1,14 @@ +// +// GiGaAnswerViewCell.h +// GIGA +// +// Created by lianxiang on 2018/9/11. +// Copyright © 2018年 com.giga.ios. All rights reserved. +// + +#import + +@interface GiGaAnswerViewCell : UITableViewCell +@property (weak, nonatomic) IBOutlet UILabel *answerTitle; + +@end diff --git a/GIGA/Modules/Mask/Exercises/View/GiGaAnswerViewCell.m b/GIGA/Modules/Mask/Exercises/View/GiGaAnswerViewCell.m new file mode 100644 index 0000000..4dd4b24 --- /dev/null +++ b/GIGA/Modules/Mask/Exercises/View/GiGaAnswerViewCell.m @@ -0,0 +1,24 @@ +// +// GiGaAnswerViewCell.m +// GIGA +// +// Created by lianxiang on 2018/9/11. +// Copyright © 2018年 com.giga.ios. All rights reserved. +// + +#import "GiGaAnswerViewCell.h" + +@implementation GiGaAnswerViewCell + +- (void)awakeFromNib { + [super awakeFromNib]; + // Initialization code +} + +- (void)setSelected:(BOOL)selected animated:(BOOL)animated { + [super setSelected:selected animated:animated]; + + // Configure the view for the selected state +} + +@end diff --git a/GIGA/Modules/Mask/Exercises/View/GiGaAnswerViewCell.xib b/GIGA/Modules/Mask/Exercises/View/GiGaAnswerViewCell.xib new file mode 100644 index 0000000..3c8b4af --- /dev/null +++ b/GIGA/Modules/Mask/Exercises/View/GiGaAnswerViewCell.xib @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/GIGA/Modules/Mask/Exercises/View/MaskQuestionView.h b/GIGA/Modules/Mask/Exercises/View/MaskQuestionView.h new file mode 100644 index 0000000..41d6834 --- /dev/null +++ b/GIGA/Modules/Mask/Exercises/View/MaskQuestionView.h @@ -0,0 +1,24 @@ +// +// MaskQuestionView.h +// GIGA +// +// Created by lianxiang on 2018/9/11. +// Copyright © 2018年 com.giga.ios. All rights reserved. +// + +#import + +typedef NS_ENUM(NSInteger,MaskQuetionViewStyle) +{ + MaskQuetionViewStleSliderNormal = 0,// 滑块正常 + MaskQuetionViewStleSliderGradient ,//滑块变色 + MaskQuetionViewStleYesOrNO // 是 否 + +}; + +@interface MaskQuestionView : UIView +@property(nonatomic,assign) MaskQuetionViewStyle *style; + +-(instancetype)initQuestionView:(CGRect)frame style:(MaskQuetionViewStyle)style titles:(NSArray *)titles; + +@end diff --git a/GIGA/Modules/Mask/Exercises/View/MaskQuestionView.m b/GIGA/Modules/Mask/Exercises/View/MaskQuestionView.m new file mode 100644 index 0000000..1019f85 --- /dev/null +++ b/GIGA/Modules/Mask/Exercises/View/MaskQuestionView.m @@ -0,0 +1,121 @@ +// +// MaskQuestionView.m +// GIGA +// +// Created by lianxiang on 2018/9/11. +// Copyright © 2018年 com.giga.ios. All rights reserved. +// + +#import "MaskQuestionView.h" +#import "GIGaQuestionSlider.h" +#import "GiGaAnswerViewCell.h" + +@interface MaskQuestionView() +@property(nonatomic,strong) NSArray *dataArr; +@property(nonatomic,strong) UITableView *tableView; +@property(nonatomic,strong) GIGaQuestionSlider *slider; +@end + +@implementation MaskQuestionView +-(NSArray *)dataArr +{ + if (!_dataArr) { + _dataArr = [NSArray new]; + } + return _dataArr; + +} + +-(instancetype)initQuestionView:(CGRect)frame style:(MaskQuetionViewStyle)style titles:(NSArray *)titles{ + + self = [super initWithFrame:frame]; + + if (self) { + self.dataArr = titles; + [self creatSubs:style titles:titles]; + + } + return self; +} + +-(void)creatSubs:(MaskQuetionViewStyle)style titles:(NSArray *)titles{ + switch (style) { + + case MaskQuetionViewStleSliderNormal: + { + [self creatNormalStyle:titles]; + } + break; + + case MaskQuetionViewStleSliderGradient: + { + + } + break; + + case MaskQuetionViewStleYesOrNO: + { + + } + break; + default: + + break; + } +} + +-(void)creatNormalStyle:(NSArray *)titles{ + + [self creatTab]; + GIGaQuestionSlider *slider = [[GIGaQuestionSlider alloc] initWithFrame:CGRectMake(0,self.frame.size.height,self.frame.size.height, 13) type:GIGaQuestionSliderTypeGray]; + [slider addTarget:self action:@selector(updateValue:) forControlEvents:UIControlEventValueChanged]; + self.slider = slider; + [self addSubview:slider]; + self.slider.transform = CGAffineTransformMakeRotation(- M_PI/2); +} + +-(void)layoutSubviews{ + + [super layoutSubviews]; + self.slider.frame = CGRectMake(90, 0, self.slider.frame.size.width, self.frame.size.height); + +} + +-(void)updateValue:(UISlider *)slider{ + NSLog(@"value%f",slider.value); + GILog(@"formatvalue:%.2f",slider.value*60); + +} + +-(void)creatTab{ + + self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(127,0, self.frame.size.width - 127, self.frame.size.height) style:UITableViewStylePlain]; + self.tableView.delegate = self; + self.tableView.dataSource = self; + self.tableView.separatorStyle = UITableViewCellSelectionStyleNone; + self.tableView.scrollEnabled = NO; + [self addSubview:self.tableView]; + +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ + return self.dataArr.count; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ + + return (self.frame.size.height - 20) / (self.dataArr.count -1); + +} +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ + GiGaAnswerViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"GiGaAnswerViewCell"]; + if (!cell) { + cell = [[[NSBundle mainBundle] loadNibNamed:@"GiGaAnswerViewCell" owner:self options:nil] lastObject]; + } + cell.answerTitle.text =self.dataArr[indexPath.row]; + return cell; + +} + + +@end diff --git a/GIGA/Modules/Mask/View/MaskTimeCircularProgressView.m b/GIGA/Modules/Mask/View/MaskTimeCircularProgressView.m index 720e60f..4ca794c 100644 --- a/GIGA/Modules/Mask/View/MaskTimeCircularProgressView.m +++ b/GIGA/Modules/Mask/View/MaskTimeCircularProgressView.m @@ -52,6 +52,12 @@ _isMoving = NO; self.countLabel.frame = CGRectMake(_lineWidth, self.frame.size.height /2 - 15 , self.frame.size.width - _lineWidth*2, 30); [self addSubview:self.countLabel]; + UILabel *minlabel = [[UILabel alloc] init]; + minlabel.frame = CGRectMake(CGRectGetMidX(self.countLabel.frame) - (18/2) , CGRectGetMaxY(self.countLabel.frame) + 8, 18, 14); + minlabel.text = @"min"; + minlabel.textColor = [UIColor whiteColor]; + minlabel.font = [UIFont fontWithName:GIGA_FONTNAME size:10]; + [self addSubview:minlabel]; } @@ -204,8 +210,7 @@ self.countLabel.text = [NSString stringWithFormat:@"%02ld:%02ld",minute,second]; if (hour == 0 && minute == 0 && second == 0) { - //面膜结束 - //[self maskTimeEnd]; + [self.timer destoryTimer]; [self.playTimer invalidate]; self.playTimer = nil; diff --git a/GIGA/Modules/Mask/View/MaskViewBootomWaringView.m b/GIGA/Modules/Mask/View/MaskViewBootomWaringView.m index 4274f19..976ec95 100644 --- a/GIGA/Modules/Mask/View/MaskViewBootomWaringView.m +++ b/GIGA/Modules/Mask/View/MaskViewBootomWaringView.m @@ -46,7 +46,7 @@ [self addSubview:dismisBtn]; [dismisBtn mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self.mas_right).offset(10); + make.right.mas_equalTo(self.mas_right).offset(-10); make.centerY.mas_equalTo(self.mas_centerY); make.width.and.height.mas_equalTo(40); @@ -59,7 +59,7 @@ [UIView animateWithDuration:0.4 animations:^{ - self.frame = CGRectMake(0, KMainH, KMainW, 60); + self.frame = CGRectMake(0, KMainH, KMainW, 44); } completion:^(BOOL finished) { [self removeFromSuperview];