From aa79e41bf76e842fec7f805c95db07eaeb3e81ed Mon Sep 17 00:00:00 2001 From: lihuilin Date: Sun, 30 Nov 2025 17:29:38 +0800 Subject: [PATCH] =?UTF-8?q?k=E7=BA=BF=E6=BB=91=E5=8A=A8=E4=B8=8E=E6=94=BE?= =?UTF-8?q?=E5=A4=A7=E7=BC=A9=E5=B0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HC.xcodeproj/project.pbxproj | 4 +- .../xcshareddata/WorkspaceSettings.xcsettings | 5 + .../WorkspaceSettings.xcsettings | 16 + .../xcdebugger/Breakpoints_v2.xcbkptlist | 72 +++ HC/AppDelegate.h | 2 +- HC/AppDelegate.m | 7 +- HC/Assets.xcassets/banner1.imageset/Contents.json | 21 + HC/Assets.xcassets/banner1.imageset/banner1.jpg | Bin 0 -> 21166 bytes HC/Assets.xcassets/banner2.imageset/Contents.json | 21 + HC/Assets.xcassets/banner2.imageset/banner2.jpg | Bin 0 -> 21462 bytes HC/Assets.xcassets/email.imageset/Contents.json | 21 + HC/Assets.xcassets/email.imageset/email.jpg | Bin 0 -> 1419 bytes HC/Assets.xcassets/hqz.imageset/Contents.json | 21 + HC/Assets.xcassets/hqz.imageset/hqz.jpg | Bin 0 -> 264622 bytes HC/Assets.xcassets/image.imageset/Contents.json | 20 + .../logo.imageset/20251117-225344.jpg | Bin 0 -> 3132 bytes HC/Assets.xcassets/logo.imageset/Contents.json | 21 + HC/Assets.xcassets/logo.jpg | Bin 0 -> 3132 bytes .../singapore_flag.imageset/Contents.json | 21 + .../singapore_flag.imageset/singapore_flag.jpg | Bin 0 -> 2161 bytes HC/CNViewController.h | 16 + HC/CNViewController.m | 12 + HC/ChartViewController.h | 16 + HC/ChartViewController.m | 592 +++++++++++++++++++ HC/CommonTabBar.h | 19 + HC/CommonTabBar.m | 94 +++ HC/CountryModel.h | 18 + HC/CountryModel.m | 20 + HC/HomeViewController.h | 45 ++ HC/HomeViewController.m | 634 +++++++++++++++++++++ HC/MLXYViewController.h | 16 + HC/MLXYViewController.m | 442 ++++++++++++++ HC/MyViewController.h | 18 + HC/MyViewController.m | 390 +++++++++++++ HC/QuotationViewController.h | 16 + HC/QuotationViewController.m | 258 +++++++++ HC/SceneDelegate.m | 22 +- HC/StockKLineModel.h | 36 ++ HC/StockKLineModel.m | 21 + HC/ViewController.h | 3 +- HC/ViewController.m | 279 ++++++++- 41 files changed, 3208 insertions(+), 11 deletions(-) create mode 100644 HC.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 HC.xcodeproj/project.xcworkspace/xcuserdata/huilinli.xcuserdatad/WorkspaceSettings.xcsettings create mode 100644 HC.xcodeproj/xcuserdata/huilinli.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 HC/Assets.xcassets/banner1.imageset/Contents.json create mode 100644 HC/Assets.xcassets/banner1.imageset/banner1.jpg create mode 100644 HC/Assets.xcassets/banner2.imageset/Contents.json create mode 100644 HC/Assets.xcassets/banner2.imageset/banner2.jpg create mode 100644 HC/Assets.xcassets/email.imageset/Contents.json create mode 100644 HC/Assets.xcassets/email.imageset/email.jpg create mode 100644 HC/Assets.xcassets/hqz.imageset/Contents.json create mode 100644 HC/Assets.xcassets/hqz.imageset/hqz.jpg create mode 100644 HC/Assets.xcassets/image.imageset/Contents.json create mode 100644 HC/Assets.xcassets/logo.imageset/20251117-225344.jpg create mode 100644 HC/Assets.xcassets/logo.imageset/Contents.json create mode 100644 HC/Assets.xcassets/logo.jpg create mode 100644 HC/Assets.xcassets/singapore_flag.imageset/Contents.json create mode 100644 HC/Assets.xcassets/singapore_flag.imageset/singapore_flag.jpg create mode 100644 HC/CNViewController.h create mode 100644 HC/CNViewController.m create mode 100644 HC/ChartViewController.h create mode 100644 HC/ChartViewController.m create mode 100644 HC/CommonTabBar.h create mode 100644 HC/CommonTabBar.m create mode 100644 HC/CountryModel.h create mode 100644 HC/CountryModel.m create mode 100644 HC/HomeViewController.h create mode 100644 HC/HomeViewController.m create mode 100644 HC/MLXYViewController.h create mode 100644 HC/MLXYViewController.m create mode 100644 HC/MyViewController.h create mode 100644 HC/MyViewController.m create mode 100644 HC/QuotationViewController.h create mode 100644 HC/QuotationViewController.m create mode 100644 HC/StockKLineModel.h create mode 100644 HC/StockKLineModel.m diff --git a/HC.xcodeproj/project.pbxproj b/HC.xcodeproj/project.pbxproj index 2be6d1f..3288676 100644 --- a/HC.xcodeproj/project.pbxproj +++ b/HC.xcodeproj/project.pbxproj @@ -11,7 +11,7 @@ /* End PBXFileReference section */ /* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ - 38BE1CFC2ECC0F28004B805B /* Exceptions for "HC" folder in "HC" target */ = { + 3895388C2ED53BDF004AECEA /* Exceptions for "HC" folder in "HC" target */ = { isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( Info.plist, @@ -24,7 +24,7 @@ 38BE1CE42ECC0F27004B805B /* HC */ = { isa = PBXFileSystemSynchronizedRootGroup; exceptions = ( - 38BE1CFC2ECC0F28004B805B /* Exceptions for "HC" folder in "HC" target */, + 3895388C2ED53BDF004AECEA /* Exceptions for "HC" folder in "HC" target */, ); path = HC; sourceTree = ""; diff --git a/HC.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/HC.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..0c67376 --- /dev/null +++ b/HC.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,5 @@ + + + + + diff --git a/HC.xcodeproj/project.xcworkspace/xcuserdata/huilinli.xcuserdatad/WorkspaceSettings.xcsettings b/HC.xcodeproj/project.xcworkspace/xcuserdata/huilinli.xcuserdatad/WorkspaceSettings.xcsettings new file mode 100644 index 0000000..723a561 --- /dev/null +++ b/HC.xcodeproj/project.xcworkspace/xcuserdata/huilinli.xcuserdatad/WorkspaceSettings.xcsettings @@ -0,0 +1,16 @@ + + + + + BuildLocationStyle + UseAppPreferences + CompilationCachingSetting + Default + CustomBuildLocationType + RelativeToDerivedData + DerivedDataLocationStyle + Default + ShowSharedSchemesAutomaticallyEnabled + + + diff --git a/HC.xcodeproj/xcuserdata/huilinli.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/HC.xcodeproj/xcuserdata/huilinli.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..7896bae --- /dev/null +++ b/HC.xcodeproj/xcuserdata/huilinli.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/HC/AppDelegate.h b/HC/AppDelegate.h index b765a55..b77986a 100644 --- a/HC/AppDelegate.h +++ b/HC/AppDelegate.h @@ -11,7 +11,7 @@ @interface AppDelegate : UIResponder @property (readonly, strong) NSPersistentContainer *persistentContainer; - +@property (strong, nonatomic) UIWindow *window; - (void)saveContext; diff --git a/HC/AppDelegate.m b/HC/AppDelegate.m index bb6d50e..cb28cd1 100644 --- a/HC/AppDelegate.m +++ b/HC/AppDelegate.m @@ -6,6 +6,8 @@ // #import "AppDelegate.h" +#import "ViewController.h" +#import "ChartViewController.h" @interface AppDelegate () @@ -15,11 +17,12 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - // Override point for customization after application launch. + #if DEBUG + [[NSBundle bundleWithPath:@"/Applications/InjectionIII.app/Contents/Resources/iOSInjection.bundle"] load]; + #endif return YES; } - #pragma mark - UISceneSession lifecycle diff --git a/HC/Assets.xcassets/banner1.imageset/Contents.json b/HC/Assets.xcassets/banner1.imageset/Contents.json new file mode 100644 index 0000000..70f2d3b --- /dev/null +++ b/HC/Assets.xcassets/banner1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "banner1.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/HC/Assets.xcassets/banner1.imageset/banner1.jpg b/HC/Assets.xcassets/banner1.imageset/banner1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..75913b1949fcc5dd1161d4fa962878d7718f6d2d GIT binary patch literal 21166 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

*n2H!06JuW{ z-@L?zbdXkDThy>t@ChS4PQ$#zU*1HM`l-L#BqvTP>iFtwtFFzN2D(OLLAK5yZO`b~+KC5wDzVbDEVE=}3KQ!Nd+!wHKeoF)7Xd$~#d% zk-Z#Zh+&rX65g!$l^9yJP$h7ma`8j58uS^sIz-kE>O%6d?k|>*M+Q_X1n5w(jMS&U yP)!|p literal 0 HcmV?d00001 diff --git a/HC/Assets.xcassets/banner2.imageset/Contents.json b/HC/Assets.xcassets/banner2.imageset/Contents.json new file mode 100644 index 0000000..938f499 --- /dev/null +++ b/HC/Assets.xcassets/banner2.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "banner2.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/HC/Assets.xcassets/banner2.imageset/banner2.jpg b/HC/Assets.xcassets/banner2.imageset/banner2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f65464225b0a8d4f9653d9433fc1a7ee298832d7 GIT binary patch literal 21462 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 Iw2uS-0n9>5NB{r; literal 0 HcmV?d00001 diff --git a/HC/Assets.xcassets/email.imageset/Contents.json b/HC/Assets.xcassets/email.imageset/Contents.json new file mode 100644 index 0000000..6488cb4 --- /dev/null +++ b/HC/Assets.xcassets/email.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "email.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/HC/Assets.xcassets/email.imageset/email.jpg b/HC/Assets.xcassets/email.imageset/email.jpg new file mode 100644 index 0000000000000000000000000000000000000000..aa23c37883590158a310d99b66489acbf54728b7 GIT binary patch literal 1419 zcmex=+ z$QDV5ur)yJBnaCE#4ax>C;_So0I`cgf}DZu6d+q89f_TU#7-_K0;%r-s5rZ)ISRxP=f? zS-`-+-@?GK?L0yZ5hewRMTubJSb!u`S{ehxr{xR`ypaqH!WS4AxT3*wKmv!`6o67P zKzHQ>VLC$&Ln?y;gC|2CLo$ONkY&VRz+lK=_Ww46GXobpI|n-(7Y7FiHy0N-pM(G( zFE5|0sFSko{Oimjfc6doi)f1MlNn{ zK3+Z<0Rb6n4J8e0lEME241ydC<_zAShX6kL> zTQL_6ZOWglH@da4@XAINwj()($$ppaah2MX9j%#Z-gWTnJ@JJ{Pm8Vym+CY!?B1Aa z?AK-M{q>!>#S)f}nfF9m9?Hh#CLMEH?pA0NdscL*y4kWTDyB=%DKH*cHG9VwgQipe zwEyj4I(7Qe#%;z?FRS@iOq*n9=H|1Gac1t>q&KgmjU@J`ZM=H=#oqh6cfxY^Y4Wr6 z9(0{#?y9`F?zqVlC)cSHaur%X$|PUVl2Si&DdXW^=AYNMo{`(S=gzfnMYU(+q^v)E z|Gc{7vfPqQ4HB-`BTg17oS8bu?3vuZ3(Tv`ZM$N16(-rt%*gKFksl?*C@DBYYuh{a zxO4gahw2{}MwsbNm0RWiDQ_od!qq0f^=Z<9uMaE7*dOJ3XBxFGCsF8xg?T|p@Wbz! zCn8t;nY%$Om(^!!gSQ6%rfReKkB^4$JW=l&D|wGA{KkACneTZ?L0L5}!W(<Jms)@uk%N!kD&F6Bg z54}>FC6p&9=&9Uw^gc-A=0_W+|M_y~sm@RSL&qfIcP2JHns_C9!3^1OnZpfdV|$!d z{<}B%O-K9Dy+^BNr(A0NZnyhueE5>zdgZV7ZTI}<;`*JR?V-o}tF?KP-^~5Be(j~& zi6Zah{6zZxhF^PWcX}^esJvCB+G20i8$CXK8-~ot$Y*bt)$HEdm(iJ)`tC@ce0R_a JtNH(L0ssVBv_k*@ literal 0 HcmV?d00001 diff --git a/HC/Assets.xcassets/hqz.imageset/Contents.json b/HC/Assets.xcassets/hqz.imageset/Contents.json new file mode 100644 index 0000000..1b018f8 --- /dev/null +++ b/HC/Assets.xcassets/hqz.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "hqz.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/HC/Assets.xcassets/hqz.imageset/hqz.jpg b/HC/Assets.xcassets/hqz.imageset/hqz.jpg new file mode 100644 index 0000000000000000000000000000000000000000..11c413f5c4f0feb6447878e3c1d8ac41d3d84dd4 GIT binary patch literal 264622 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

dw{oka?1A1z@5qdYZ7H^M*hI7 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 z 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface CNViewController : UIViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/HC/CNViewController.m b/HC/CNViewController.m new file mode 100644 index 0000000..1f71662 --- /dev/null +++ b/HC/CNViewController.m @@ -0,0 +1,12 @@ +// +// CNViewController.m +// HC +// +// Created by huilinLi on 2025/11/26. +// + +#import "CNViewController.h" + +@implementation CNViewController + +@end diff --git a/HC/ChartViewController.h b/HC/ChartViewController.h new file mode 100644 index 0000000..2c0f6c7 --- /dev/null +++ b/HC/ChartViewController.h @@ -0,0 +1,16 @@ +// +// ChartViewController.h +// HC +// +// Created by huilinLi on 2025/11/27. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface ChartViewController : UIViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/HC/ChartViewController.m b/HC/ChartViewController.m new file mode 100644 index 0000000..91208fe --- /dev/null +++ b/HC/ChartViewController.m @@ -0,0 +1,592 @@ +// ChartViewController.m +// HC +// +// Created by huilinLi on 2025/11/27. +// + +#import "ChartViewController.h" +#import "StockKLineModel.h" + +@interface ChartViewController () + +// 上方卡片容器 +@property (nonatomic, strong) UIView *cardContainer; +// k线选择项容器 +@property (nonatomic, strong) UIView *kSelectContainer; +// K线图表容器 +@property (nonatomic, strong) UIView *kLineContainer; +// K线图表滚动视图 +@property (nonatomic, strong) UIScrollView *kLineScrollView; + +// K线数据 +@property (nonatomic, strong) NSArray *kLineData; +// 价格刻度标签 +@property (nonatomic, strong) NSArray *priceLabels; +// 日期刻度标签 +@property (nonatomic, strong) NSArray *dateLabels; + +// 默认展示的K线数量 +@property (nonatomic, assign) NSInteger visibleKLineCount; + +@end + +@implementation ChartViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + self.view.backgroundColor = [UIColor blackColor]; + + self.visibleKLineCount = 40; + + [self generateMockData]; + [self setupSubviews]; + [self setupConstraints]; + + dispatch_async(dispatch_get_main_queue(), ^{ + [self drawKLineChart]; + + if (self.kLineScrollView.contentSize.width > self.kLineScrollView.bounds.size.width) { + CGPoint offset = CGPointMake(self.kLineScrollView.contentSize.width - self.kLineScrollView.bounds.size.width, 0); + [self.kLineScrollView setContentOffset:offset animated:NO]; + } + }); +} + +#pragma mark - UI Setup +-(void) setupSubviews{ + // 卡片容器 + _cardContainer = [[UIView alloc] init]; + _cardContainer.backgroundColor = [UIColor colorWithRed:26.0/255.0 + green:26.0/255.0 + blue:2.0/255.0 + alpha:1.0]; + _cardContainer.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_cardContainer]; + + UILabel *cardLabel1 = [[UILabel alloc] init]; + cardLabel1.text = @"1617.060"; + cardLabel1.textColor = [UIColor redColor]; + cardLabel1.font = [UIFont systemFontOfSize:15]; + cardLabel1.translatesAutoresizingMaskIntoConstraints = NO; + [_cardContainer addSubview:cardLabel1]; + + UILabel *cardLabel2 = [[UILabel alloc] init]; + cardLabel2.text = @"-7.470"; + cardLabel2.textColor = [UIColor redColor]; + cardLabel2.font = [UIFont systemFontOfSize:8]; + cardLabel2.translatesAutoresizingMaskIntoConstraints = NO; + [_cardContainer addSubview:cardLabel2]; + + UILabel *cardLabel3 = [[UILabel alloc] init]; + cardLabel3.text = @"-0.461%"; + cardLabel3.textColor = [UIColor redColor]; + cardLabel3.font = [UIFont systemFontOfSize:8]; + cardLabel3.translatesAutoresizingMaskIntoConstraints = NO; + [_cardContainer addSubview:cardLabel3]; + + [NSLayoutConstraint activateConstraints:@[ + [cardLabel1.topAnchor constraintEqualToAnchor:_cardContainer.topAnchor constant:25], + [cardLabel1.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor constant:10], + + [cardLabel2.topAnchor constraintEqualToAnchor:_cardContainer.topAnchor constant:50], + [cardLabel2.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor constant: 8], + + [cardLabel3.topAnchor constraintEqualToAnchor:_cardContainer.topAnchor constant:50], + [cardLabel3.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor constant: 45] + ]]; + + UILabel *cardLabelHeight = [[UILabel alloc] init]; + cardLabelHeight.text = @"高"; + cardLabelHeight.textColor = [UIColor colorWithRed:0.2 green:0.2 blue:0.2 alpha:1]; + cardLabelHeight.font = [UIFont systemFontOfSize:15]; + cardLabelHeight.translatesAutoresizingMaskIntoConstraints = NO; + [_cardContainer addSubview:cardLabelHeight]; + + UILabel *cardLabelStart = [[UILabel alloc] init]; + cardLabelStart.text = @"开"; + cardLabelStart.textColor = [UIColor colorWithRed:0.2 green:0.2 blue:0.2 alpha:1]; + cardLabelStart.font = [UIFont systemFontOfSize:15]; + cardLabelStart.translatesAutoresizingMaskIntoConstraints = NO; + [_cardContainer addSubview:cardLabelStart]; + + UILabel *cardLabelVolume = [[UILabel alloc] init]; + cardLabelVolume.text = @"量"; + cardLabelVolume.textColor = [UIColor colorWithRed:0.2 green:0.2 blue:0.2 alpha:1]; + cardLabelVolume.font = [UIFont systemFontOfSize:15]; + cardLabelVolume.translatesAutoresizingMaskIntoConstraints = NO; + [_cardContainer addSubview:cardLabelVolume]; + + UILabel *cardLabelLow = [[UILabel alloc] init]; + cardLabelLow.text = @"低"; + cardLabelLow.textColor = [UIColor colorWithRed:0.2 green:0.2 blue:0.2 alpha:1]; + cardLabelLow.font = [UIFont systemFontOfSize:15]; + cardLabelLow.translatesAutoresizingMaskIntoConstraints = NO; + [_cardContainer addSubview:cardLabelLow]; + + UILabel *cardLabelChange = [[UILabel alloc] init]; + cardLabelChange.text = @"换"; + cardLabelChange.textColor = [UIColor colorWithRed:0.2 green:0.2 blue:0.2 alpha:1]; + cardLabelChange.font = [UIFont systemFontOfSize:15]; + cardLabelChange.translatesAutoresizingMaskIntoConstraints = NO; + [_cardContainer addSubview:cardLabelChange]; + + UILabel *cardLabelQuota = [[UILabel alloc] init]; + cardLabelQuota.text = @"额"; + cardLabelQuota.textColor = [UIColor colorWithRed:0.2 green:0.2 blue:0.2 alpha:1]; + cardLabelQuota.font = [UIFont systemFontOfSize:15]; + cardLabelQuota.translatesAutoresizingMaskIntoConstraints = NO; + [_cardContainer addSubview:cardLabelQuota]; + + UILabel *cardNumHeight = [[UILabel alloc] init]; + cardNumHeight.text = @"1617.260"; + cardNumHeight.textColor = [UIColor redColor]; + cardNumHeight.font = [UIFont systemFontOfSize:12]; + cardNumHeight.translatesAutoresizingMaskIntoConstraints = NO; + [_cardContainer addSubview:cardNumHeight]; + + UILabel *cardNumStart = [[UILabel alloc] init]; + cardNumStart.text = @"1616.750"; + cardNumStart.textColor = [UIColor redColor]; + cardNumStart.font = [UIFont systemFontOfSize:12]; + cardNumStart.translatesAutoresizingMaskIntoConstraints = NO; + [_cardContainer addSubview:cardNumStart]; + + UILabel *cardNumVolume = [[UILabel alloc] init]; + cardNumVolume.text = @"1.511亿"; + cardNumVolume.textColor = [UIColor whiteColor]; + cardNumVolume.font = [UIFont systemFontOfSize:12]; + cardNumVolume.translatesAutoresizingMaskIntoConstraints = NO; + [_cardContainer addSubview:cardNumVolume]; + + UILabel *cardNumLow = [[UILabel alloc] init]; + cardNumLow.text = @"1608.850"; + cardNumLow.textColor = [UIColor whiteColor]; + cardNumLow.font = [UIFont systemFontOfSize:12]; + cardNumLow.translatesAutoresizingMaskIntoConstraints = NO; + [_cardContainer addSubview:cardNumLow]; + + UILabel *cardNumChange = [[UILabel alloc] init]; + cardNumChange.text = @"--"; + cardNumChange.textColor = [UIColor whiteColor]; + cardNumChange.font = [UIFont systemFontOfSize:12]; + cardNumChange.translatesAutoresizingMaskIntoConstraints = NO; + [_cardContainer addSubview:cardNumChange]; + + UILabel *cardNumQuota = [[UILabel alloc] init]; + cardNumQuota.text = @"--"; + cardNumQuota.textColor = [UIColor whiteColor]; + cardNumQuota.font = [UIFont systemFontOfSize:12]; + cardNumQuota.translatesAutoresizingMaskIntoConstraints = NO; + [_cardContainer addSubview:cardNumQuota]; + + [NSLayoutConstraint activateConstraints:@[ + [cardLabelHeight.bottomAnchor constraintEqualToAnchor:_cardContainer.bottomAnchor constant:-75], + + [cardLabelStart.bottomAnchor constraintEqualToAnchor:cardLabelHeight.bottomAnchor], + + [cardLabelVolume.bottomAnchor constraintEqualToAnchor:cardLabelHeight.bottomAnchor], + + [cardLabelLow.topAnchor constraintEqualToAnchor:_cardContainer.bottomAnchor constant:-50], + [cardLabelLow.leadingAnchor constraintEqualToAnchor:cardLabelHeight.leadingAnchor], + + [cardLabelChange.topAnchor constraintEqualToAnchor:_cardContainer.bottomAnchor constant:-50], + [cardLabelChange.leadingAnchor constraintEqualToAnchor:cardLabelStart.leadingAnchor], + + [cardLabelQuota.topAnchor constraintEqualToAnchor:_cardContainer.bottomAnchor constant:-50], + [cardLabelQuota.leadingAnchor constraintEqualToAnchor:cardLabelVolume.leadingAnchor], + + [cardNumHeight.bottomAnchor constraintEqualToAnchor:_cardContainer.topAnchor constant:45], + [cardNumHeight.leadingAnchor constraintEqualToAnchor:cardLabelHeight.leadingAnchor], + + [cardNumStart.bottomAnchor constraintEqualToAnchor:cardNumHeight.bottomAnchor], + [cardNumStart.leadingAnchor constraintEqualToAnchor:cardLabelStart.leadingAnchor], + + [cardNumVolume.bottomAnchor constraintEqualToAnchor:cardNumHeight.bottomAnchor], + [cardNumVolume.leadingAnchor constraintEqualToAnchor:cardLabelVolume.leadingAnchor], + + [cardNumLow.bottomAnchor constraintEqualToAnchor:_cardContainer.bottomAnchor constant:-10], + [cardNumLow.leadingAnchor constraintEqualToAnchor:cardLabelLow.leadingAnchor], + + [cardNumChange.bottomAnchor constraintEqualToAnchor:cardNumLow.bottomAnchor], + [cardNumChange.leadingAnchor constraintEqualToAnchor:cardLabelChange.leadingAnchor], + + [cardNumQuota.bottomAnchor constraintEqualToAnchor:cardNumLow.bottomAnchor], + [cardNumQuota.leadingAnchor constraintEqualToAnchor:cardLabelVolume.leadingAnchor] + ]]; + + [NSLayoutConstraint constraintWithItem:cardLabelHeight + attribute:NSLayoutAttributeLeading + relatedBy:NSLayoutRelationEqual + toItem:_cardContainer + attribute:NSLayoutAttributeTrailing + multiplier:0.25 + constant:0].active = YES; + [NSLayoutConstraint constraintWithItem:cardLabelStart + attribute:NSLayoutAttributeLeading + relatedBy:NSLayoutRelationEqual + toItem:_cardContainer + attribute:NSLayoutAttributeTrailing + multiplier:0.5 + constant:0].active = YES; + [NSLayoutConstraint constraintWithItem:cardLabelVolume + attribute:NSLayoutAttributeLeading + relatedBy:NSLayoutRelationEqual + toItem:_cardContainer + attribute:NSLayoutAttributeTrailing + multiplier:0.75 + constant:0].active = YES; + + // K线选择项容器 + _kSelectContainer = [[UIView alloc] init]; + _kSelectContainer.backgroundColor = [UIColor colorWithRed:26.0/255.0 + green:26.0/255.0 + blue:2.0/255.0 + alpha:1.0]; + _kSelectContainer.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_kSelectContainer]; + [self addKSelectOptions]; + + // K线图表容器 + self.kLineContainer = [[UIView alloc] init]; + self.kLineContainer.backgroundColor = [UIColor colorWithRed:26.0/255.0 green:26.0/255.0 blue:26.0/255.0 alpha:1.0]; + self.kLineContainer.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:self.kLineContainer]; + + // K线图表滚动视图 + self.kLineScrollView = [[UIScrollView alloc] init]; + self.kLineScrollView.backgroundColor = [UIColor clearColor]; + self.kLineScrollView.showsHorizontalScrollIndicator = NO; + self.kLineScrollView.userInteractionEnabled = YES; + self.kLineScrollView.translatesAutoresizingMaskIntoConstraints = NO; + + [self.kLineContainer addSubview:self.kLineScrollView]; + + CGFloat priceLabelAreaWidth = 50.0; + + // 滚动视图的约束 + [NSLayoutConstraint activateConstraints:@[ + [self.kLineScrollView.topAnchor constraintEqualToAnchor:self.kLineContainer.topAnchor], + [self.kLineScrollView.bottomAnchor constraintEqualToAnchor:self.kLineContainer.bottomAnchor], + [self.kLineScrollView.leadingAnchor constraintEqualToAnchor:self.kLineContainer.leadingAnchor constant:priceLabelAreaWidth], + [self.kLineScrollView.trailingAnchor constraintEqualToAnchor:self.kLineContainer.trailingAnchor], + [self.kLineScrollView.heightAnchor constraintEqualToAnchor:self.kLineContainer.heightAnchor] + ]]; + + // 边框 + UIView *borderView = [[UIView alloc] init]; + borderView.backgroundColor = [UIColor clearColor]; + borderView.layer.borderWidth = 1; + borderView.layer.borderColor = [[UIColor colorWithRed:0.4 green:0.4 blue:0.4 alpha:1.0] CGColor]; + borderView.translatesAutoresizingMaskIntoConstraints = NO; + [self.kLineContainer addSubview:borderView]; + [NSLayoutConstraint activateConstraints:@[ + [borderView.leadingAnchor constraintEqualToAnchor:self.kLineContainer.leadingAnchor], + [borderView.trailingAnchor constraintEqualToAnchor:self.kLineContainer.trailingAnchor], + [borderView.topAnchor constraintEqualToAnchor:self.kLineContainer.topAnchor], + [borderView.bottomAnchor constraintEqualToAnchor:self.kLineContainer.bottomAnchor] + ]]; + + // 动态计算模型数据的价格区间 + CGFloat maxPrice = 0; + CGFloat minPrice = CGFLOAT_MAX; + for (id item in self.kLineData) { + if ([item isKindOfClass:[StockKLineModel class]]) { + StockKLineModel *model = (StockKLineModel *)item; + maxPrice = MAX(maxPrice, model.high); + minPrice = MIN(minPrice, model.low); + } else if ([item isKindOfClass:[NSDictionary class]]) { + NSDictionary *dict = (NSDictionary *)item; + maxPrice = MAX(maxPrice, [dict[@"high"] floatValue]); + minPrice = MIN(minPrice, [dict[@"low"] floatValue]); + } + } + maxPrice = maxPrice + (maxPrice - minPrice) * 0.1; + minPrice = minPrice - (maxPrice - minPrice) * 0.1; + + // 价格刻度 + NSMutableArray *priceLabelArr = [NSMutableArray array]; + for (NSInteger i = 0; i < 5; i++) { + CGFloat price = maxPrice - (maxPrice - minPrice) / 4 * i; + UILabel *label = [[UILabel alloc] init]; + label.text = [NSString stringWithFormat:@"%.1f", price]; + label.textColor = [UIColor lightGrayColor]; + label.font = [UIFont systemFontOfSize:10]; + label.translatesAutoresizingMaskIntoConstraints = NO; + [self.kLineContainer addSubview:label]; + + [NSLayoutConstraint activateConstraints:@[ + [label.leadingAnchor constraintEqualToAnchor:self.kLineContainer.leadingAnchor constant:5], + [label.centerYAnchor constraintEqualToAnchor:self.kLineContainer.centerYAnchor constant:-80 + 40 * i] + ]]; + [priceLabelArr addObject:label]; + } + self.priceLabels = priceLabelArr; + + self.dateLabels = @[]; +} + +- (void)addKSelectOptions { + NSArray *titles = @[@"日k", @"周k", @"月k", @"更多", @"设置"]; + + UIStackView *stackView = [[UIStackView alloc] init]; + stackView.axis = UILayoutConstraintAxisHorizontal; + stackView.distribution = UIStackViewDistributionFillEqually; + stackView.alignment = UIStackViewAlignmentCenter; + stackView.spacing = 5.0; + stackView.translatesAutoresizingMaskIntoConstraints = NO; + + for (NSString *title in titles) { + UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem]; + [button setTitle:title forState:UIControlStateNormal]; + button.titleLabel.font = [UIFont systemFontOfSize:14]; + [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + + if ([title isEqualToString:@"日k"]) { + [button setTitleColor:[UIColor yellowColor] forState:UIControlStateNormal]; + button.layer.borderColor = [[UIColor yellowColor] CGColor]; + button.layer.borderWidth = 1.0; + } else { + [button setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal]; + button.layer.borderWidth = 0; + } + + button.layer.cornerRadius = 3.0; + button.clipsToBounds = YES; + + [stackView addArrangedSubview:button]; + } + + [_kSelectContainer addSubview:stackView]; + + [NSLayoutConstraint activateConstraints:@[ + [stackView.leadingAnchor constraintEqualToAnchor:_kSelectContainer.leadingAnchor constant:10], + [stackView.trailingAnchor constraintEqualToAnchor:_kSelectContainer.trailingAnchor constant:-10], + [stackView.topAnchor constraintEqualToAnchor:_kSelectContainer.topAnchor constant:5], + [stackView.bottomAnchor constraintEqualToAnchor:_kSelectContainer.bottomAnchor constant:-5] + ]]; +} + +#pragma mark - Constraints +- (void)setupConstraints{ + [NSLayoutConstraint activateConstraints:@[ + [_cardContainer.topAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.topAnchor], + [_cardContainer.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor], + [_cardContainer.widthAnchor constraintEqualToAnchor:self.view.widthAnchor], + [_cardContainer.heightAnchor constraintEqualToConstant:100], + + [_kSelectContainer.topAnchor constraintEqualToAnchor:_cardContainer.bottomAnchor constant:5], + [_kSelectContainer.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor], + [_kSelectContainer.widthAnchor constraintEqualToAnchor:self.view.widthAnchor], + [_kSelectContainer.heightAnchor constraintEqualToConstant:40], + + [self.kLineContainer.topAnchor constraintEqualToAnchor:self.kSelectContainer.bottomAnchor constant:5], + [self.kLineContainer.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor], + [self.kLineContainer.widthAnchor constraintEqualToAnchor:self.view.widthAnchor], + [self.kLineContainer.heightAnchor constraintEqualToConstant:200] + ]]; +} + +#pragma mark - KLine Drawing +- (void)drawKLineChart { + // 移除旧的 K 线 + for (UIView *subview in self.kLineScrollView.subviews) { + if (![subview isKindOfClass:[UILabel class]]) { + [subview removeFromSuperview]; + } + } + + CGFloat chartHeight = self.kLineContainer.bounds.size.height; + if (chartHeight == 0) { + chartHeight = 200; + } + + // K线宽度计算 + CGFloat kLineUnitWidth = 5.0; + CGFloat kLineRatio = 0.8; + CGFloat kLineWidth = kLineUnitWidth * kLineRatio; + CGFloat space = kLineUnitWidth * (1.0 - kLineRatio); + CGFloat totalChartWidth = kLineUnitWidth * self.kLineData.count; + + // 设置contentSize + self.kLineScrollView.contentSize = CGSizeMake(totalChartWidth, chartHeight); + + // 动态计算价格区间 + CGFloat maxPrice = 0; + CGFloat minPrice = CGFLOAT_MAX; + for (id item in self.kLineData) { + if ([item isKindOfClass:[StockKLineModel class]]) { + StockKLineModel *model = (StockKLineModel *)item; + maxPrice = MAX(maxPrice, model.high); + minPrice = MIN(minPrice, model.low); + } else if ([item isKindOfClass:[NSDictionary class]]) { + NSDictionary *dict = (NSDictionary *)item; + maxPrice = MAX(maxPrice, [dict[@"high"] floatValue]); + minPrice = MIN(minPrice, [dict[@"low"] floatValue]); + } + } + maxPrice = maxPrice + (maxPrice - minPrice) * 0.1; + minPrice = minPrice - (maxPrice - minPrice) * 0.1; + CGFloat priceRange = maxPrice - minPrice; + + // 绘制K线 + for (NSInteger i = 0; i < self.kLineData.count; i++) { + CGFloat open = 0, high = 0, low = 0, close = 0; + + if ([self.kLineData[i] isKindOfClass:[StockKLineModel class]]) { + StockKLineModel *model = (StockKLineModel *)self.kLineData[i]; + open = model.open; + high = model.high; + low = model.low; + close = model.close; + } else if ([self.kLineData[i] isKindOfClass:[NSDictionary class]]) { + NSDictionary *dict = (NSDictionary *)self.kLineData[i]; + open = [dict[@"open"] floatValue]; + high = [dict[@"high"] floatValue]; + low = [dict[@"low"] floatValue]; + close = [dict[@"close"] floatValue]; + } + + // 坐标转换 + CGFloat yOpen = chartHeight * (maxPrice - open) / priceRange; + CGFloat yHigh = chartHeight * (maxPrice - high) / priceRange; + CGFloat yLow = chartHeight * (maxPrice - low) / priceRange; + CGFloat yClose = chartHeight * (maxPrice - close) / priceRange; + + // 计算X坐标 + CGFloat xPosition = space/2 + kLineUnitWidth * i; + + // 绘制K线实体 + UIView *bodyView = [[UIView alloc] init]; + bodyView.backgroundColor = (close >= open) ? [UIColor greenColor] : [UIColor redColor]; + bodyView.frame = CGRectMake( + xPosition, + MIN(yOpen, yClose), + kLineWidth, + MAX(1.0, fabs(yClose - yOpen)) + ); + [self.kLineScrollView addSubview:bodyView]; + + // 绘制影线 + UIView *shadowView = [[UIView alloc] init]; + shadowView.backgroundColor = bodyView.backgroundColor; + shadowView.frame = CGRectMake( + bodyView.center.x - 0.5, + yHigh, + 1, + yLow - yHigh + ); + [self.kLineScrollView addSubview:shadowView]; + } + + // 日期刻度 + for (UILabel *label in self.dateLabels) { + [label removeFromSuperview]; + } + + NSMutableArray *dateLabelArr = [NSMutableArray array]; + NSInteger dateInterval = 10; + + for (NSInteger i = 0; i < self.kLineData.count; i += dateInterval) { + NSString *dateStr = @""; + if ([self.kLineData[i] isKindOfClass:[StockKLineModel class]]) { + StockKLineModel *model = (StockKLineModel *)self.kLineData[i]; + dateStr = model.date; + } else if ([self.kLineData[i] isKindOfClass:[NSDictionary class]]) { + NSDictionary *dict = (NSDictionary *)self.kLineData[i]; + dateStr = dict[@"date"]; + } + UILabel *label = [[UILabel alloc] init]; + label.text = dateStr; + label.textColor = [UIColor lightGrayColor]; + label.font = [UIFont systemFontOfSize:10]; + label.translatesAutoresizingMaskIntoConstraints = YES; + + CGFloat xCenter = kLineUnitWidth * (i + 0.5); + [label sizeToFit]; + + label.frame = CGRectMake( + xCenter - label.bounds.size.width / 2, + chartHeight - 15, + label.bounds.size.width, + label.bounds.size.height + ); + + [self.kLineScrollView addSubview:label]; + [dateLabelArr addObject:label]; + } + self.dateLabels = dateLabelArr; + + NSLog(@"ScrollView Bounds Width: %f", self.kLineScrollView.bounds.size.width); + NSLog(@"Content Size Width: %f", self.kLineScrollView.contentSize.width); + + if (self.kLineScrollView.contentSize.width <= self.kLineScrollView.bounds.size.width) { + NSLog(@"⚠️ 警告:ContentSize 不够大,无法滑动。"); + } +} + +#pragma mark - Mock Data +- (void) setupData{ + self.kLineData = @[ + @{@"date":@"2025/11/18", @"open":@1620.0, @"high":@1643.0, @"low":@1605.0, @"close":@1630.0, @"volume":@2.5}, + @{@"date":@"2025/11/19", @"open":@1630.0, @"high":@1635.0, @"low":@1615.0, @"close":@1620.0, @"volume":@2.2}, + @{@"date":@"2025/11/20", @"open":@1620.0, @"high":@1628.0, @"low":@1608.0, @"close":@1615.0, @"volume":@1.8}, + @{@"date":@"2025/11/21", @"open":@1615.0, @"high":@1625.0, @"low":@1610.0, @"close":@1622.0, @"volume":@2.0}, + @{@"date":@"2025/11/22", @"open":@1622.0, @"high":@1630.0, @"low":@1618.0, @"close":@1625.0, @"volume":@2.3}, + @{@"date":@"2025/11/25", @"open":@1625.0, @"high":@1632.0, @"low":@1620.0, @"close":@1628.0, @"volume":@1.9}, + @{@"date":@"2025/11/26", @"open":@1628.0, @"high":@1635.0, @"low":@1622.0, @"close":@1630.0, @"volume":@2.1}, + @{@"date":@"2025/11/27", @"open":@1630.0, @"high":@1638.0, @"low":@1625.0, @"close":@1628.0, @"volume":@2.4}, + @{@"date":@"2025/11/28", @"open":@1628.0, @"high":@1632.0, @"low":@1609.0, @"close":@1610.0, @"volume":@2.6}, + @{@"date":@"2025/11/29", @"open":@1610.0, @"high":@1620.0, @"low":@1608.0, @"close":@1615.0, @"volume":@1.7} + ]; +} + +- (void)generateMockData { + NSMutableArray *arr = [NSMutableArray array]; + CGFloat lastClose = 100.0; + NSLog(@"生成模拟数据中。。。"); + + // 生成200条数据(减少数量,避免contentSize过大) + for (int i = 0; i < 200; i++) { + StockKLineModel *model = [[StockKLineModel alloc] init]; + + NSDate *date = [NSDate dateWithTimeIntervalSinceNow:-(200 - i) * 24 * 3600]; + NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; + [fmt setDateFormat:@"MM-dd"]; + model.date = [fmt stringFromDate:date]; + + // 价格生成逻辑 + CGFloat volatility = lastClose * 0.02; + CGFloat randomChange = ((arc4random() % 100) / 100.0 - 0.5) * 2 * volatility; + + model.open = lastClose + ((arc4random() % 100) / 100.0 - 0.5) * volatility * 0.5; + model.close = model.open + randomChange; + + CGFloat maxOC = MAX(model.open, model.close); + CGFloat minOC = MIN(model.open, model.close); + + model.high = maxOC + (arc4random() % 100) / 100.0 * 1.0; + model.low = minOC - (arc4random() % 100) / 100.0 * 1.0; + + // 成交量生成逻辑 + CGFloat baseVolume = 1000000.0; + CGFloat randomVolFactor = (arc4random() % 200) / 100.0 + 0.5; + + if (fabs(model.close - model.open) / model.open > 0.03) { + randomVolFactor *= 1.5; + } + + model.volume = baseVolume * randomVolFactor; + + if (model.low < 0) model.low = 0.01; + + [arr addObject:model]; + + lastClose = model.close; + } + + NSLog(@"生成模拟数据完毕,共%ld条", arr.count); + + self.kLineData = arr; +} + +@end diff --git a/HC/CommonTabBar.h b/HC/CommonTabBar.h new file mode 100644 index 0000000..11a496f --- /dev/null +++ b/HC/CommonTabBar.h @@ -0,0 +1,19 @@ +// +// CommonTabBar.h +// HC +// +// Created by huilinLi on 2025/11/25. +// + +#import + +@protocol CommonTabBarDelegate +- (void)tabBarDidSelectIndex:(NSInteger)index; +@end + +@interface CommonTabBar : UIView +@property (nonatomic, weak) id delegate; +@property (nonatomic, assign) NSInteger selectedIndex; // 当前选中的索引 + +- (instancetype)initWithTabItems:(NSArray *)tabItems; +@end diff --git a/HC/CommonTabBar.m b/HC/CommonTabBar.m new file mode 100644 index 0000000..4c9a9b3 --- /dev/null +++ b/HC/CommonTabBar.m @@ -0,0 +1,94 @@ +// +// CommonTabBar.m +// HC +// +// Created by huilinLi on 2025/11/25. +// + +#import "CommonTabBar.h" + +@interface CommonTabBar () +@property (nonatomic, strong) NSArray *tabButtons; +@end + +@implementation CommonTabBar + +- (instancetype)initWithTabItems:(NSArray *)tabItems { + self = [super init]; + if (self) { + self.backgroundColor = [UIColor blackColor]; + self.translatesAutoresizingMaskIntoConstraints = NO; + [self setupTabButtonsWithItems:tabItems]; + } + return self; +} + +- (void)setupTabButtonsWithItems:(NSArray *)tabItems { + NSMutableArray *buttons = [NSMutableArray array]; + + for (NSInteger i = 0; i < tabItems.count; i++) { + NSDictionary *item = tabItems[i]; + UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem]; + + UIButtonConfiguration *config = [UIButtonConfiguration plainButtonConfiguration]; + config.image = [UIImage systemImageNamed:item[@"icon"] ?: @""]; + config.title = item[@"title"]; + config.imagePlacement = NSDirectionalRectEdgeTop; + config.imagePadding = 5; + btn.configuration = config; + + BOOL selected = [item[@"selected"] boolValue]; + btn.tintColor = selected ? [UIColor blueColor] : [UIColor whiteColor]; + btn.titleLabel.font = [UIFont systemFontOfSize:10]; + btn.tag = i; + + [btn addTarget:self action:@selector(tabButtonTapped:) forControlEvents:UIControlEventTouchUpInside]; + + [self addSubview:btn]; + [buttons addObject:btn]; + } + + self.tabButtons = buttons; + [self setupTabButtonConstraints]; +} + +- (void)setupTabButtonConstraints { + for (NSInteger i = 0; i < self.tabButtons.count; i++) { + UIButton *btn = self.tabButtons[i]; + btn.translatesAutoresizingMaskIntoConstraints = NO; + + [NSLayoutConstraint activateConstraints:@[ + [btn.widthAnchor constraintEqualToAnchor:self.widthAnchor multiplier:1.0/self.tabButtons.count], + [btn.heightAnchor constraintEqualToAnchor:self.heightAnchor], + [btn.centerYAnchor constraintEqualToAnchor:self.centerYAnchor], + + (i == 0) ? [btn.leadingAnchor constraintEqualToAnchor:self.leadingAnchor] : + [btn.leadingAnchor constraintEqualToAnchor:self.tabButtons[i-1].trailingAnchor], + ]]; + } + + // TabBar自身高度 + [self.heightAnchor constraintEqualToConstant:60].active = YES; +} + +- (void)tabButtonTapped:(UIButton *)sender { + self.selectedIndex = sender.tag; + + for (UIButton *btn in self.tabButtons) { + btn.tintColor = (btn.tag == sender.tag) ? [UIColor blueColor] : [UIColor whiteColor]; + } + + if ([self.delegate respondsToSelector:@selector(tabBarDidSelectIndex:)]) { + [self.delegate tabBarDidSelectIndex:sender.tag]; + } +} + +// 外部设置选中索引时更新样式 +- (void)setSelectedIndex:(NSInteger)selectedIndex { + _selectedIndex = selectedIndex; + for (UIButton *btn in self.tabButtons) { + btn.tintColor = (btn.tag == selectedIndex) ? [UIColor blueColor] : [UIColor whiteColor]; + } +} + +@end diff --git a/HC/CountryModel.h b/HC/CountryModel.h new file mode 100644 index 0000000..0be93f9 --- /dev/null +++ b/HC/CountryModel.h @@ -0,0 +1,18 @@ +// +// CountryModel.h +// HC +// +// Created by huilinLi on 2025/11/26. +// + +#import +@interface CountryModel : NSObject +@property (nonatomic, copy) NSString *code; // 国家代码 +@property (nonatomic, copy) NSString *name; // 国家名称 +@property (nonatomic, copy) NSString *vcClassName; // 子控制器名称 + ++ (instancetype)modelWithCode:(NSString *)code + name:(NSString *)name + vcClassName:(NSString *)vcClassName; +@end + diff --git a/HC/CountryModel.m b/HC/CountryModel.m new file mode 100644 index 0000000..2f9e88f --- /dev/null +++ b/HC/CountryModel.m @@ -0,0 +1,20 @@ +// +// CountryModel.m +// HC +// +// Created by huilinLi on 2025/11/26. +// + +#import "CountryModel.h" + +@implementation CountryModel ++ (instancetype)modelWithCode:(NSString *)code + name:(NSString *)name + vcClassName:(NSString *)vcClassName { + CountryModel *model = [[self alloc] init]; + model.code = code; + model.name = name; + model.vcClassName = vcClassName; + return model; +} +@end diff --git a/HC/HomeViewController.h b/HC/HomeViewController.h new file mode 100644 index 0000000..6d503ce --- /dev/null +++ b/HC/HomeViewController.h @@ -0,0 +1,45 @@ +// +// HomeViewController.h +// HC +// +// Created by huilinLi on 2025/11/18. +// + +#import +#import "CommonTabBar.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface HomeViewController : UIViewController + +@property (nonatomic, strong) UILabel *successLabel; +@property (nonatomic, strong) UITextField *searchField; +@property (nonatomic, strong) UIImageView *logoImage; +@property (nonatomic, strong) UIImageView *flagIcon; +@property (nonatomic, strong) UIButton *messageBtn; +@property (nonatomic, strong) UIScrollView *functionScrollView; +@property (nonatomic, strong) NSMutableArray *functionBtns; +@property (nonatomic, strong) UIScrollView *bannerScrollView; +@property (nonatomic, strong) UIPageControl *bannerPageControl; +@property (nonatomic, strong) UIView *tabContainer; +@property (nonatomic, strong) UIButton *courseBtn; // 课程按钮 +@property (nonatomic, strong) UIButton *infoBtn; // 资讯按钮 +@property (nonatomic, strong) UIButton *activityBtn; // 活动按钮 +@property (nonatomic, strong) UIView *courseUnderline; // 课程下划线 +@property (nonatomic, strong) UIView *infoUnderline; // 资讯下划线 +@property (nonatomic, strong) UIView *activityUnderline;// 活动下划线 +@property (nonatomic, strong) UITableView *courseTableView; +// @property (nonatomic, strong) UIView *commonTabBar; +@property (nonatomic, strong) CommonTabBar *commonTabBar; +@property (nonatomic, strong) UIButton *homeTabBtn; +@property (nonatomic, strong) UIButton *marketTabBtn; +@property (nonatomic, strong) UIButton *favoritesTabBtn; +@property (nonatomic, strong) UIButton *mineTabBtn; +@property (nonatomic, strong) UIImageView *redPacketIcon; +@property (nonatomic, strong) NSArray *functionIcons; +@property (nonatomic, strong) NSArray *courseData; +@property (nonatomic, strong) NSTimer *bannerTimer; // 轮播图的定时器 +@property (nonatomic, assign) NSInteger currentBannerIndex; // 当前轮播页码 +@end + +NS_ASSUME_NONNULL_END diff --git a/HC/HomeViewController.m b/HC/HomeViewController.m new file mode 100644 index 0000000..6a2d6fd --- /dev/null +++ b/HC/HomeViewController.m @@ -0,0 +1,634 @@ +// +// HomeViewController.m +// HC +// +// Created by huilinLi on 2025/11/18. +// +#import +#import "HomeViewController.h" +#import "MyViewController.h" +#import "CommonTabBar.h" +#import "QuotationViewController.h" + + +@implementation HomeViewController + +- (void)viewDidLoad { + self.view.backgroundColor = [UIColor blackColor]; + + [self setupData]; + [self setupSubviews]; + [self setupConstraints]; + + [self selectButton:self.courseBtn];// 课程 +} + +-(void) setupSubviews{ + // 搜索框左边logo + _logoImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo"]]; + _logoImage.contentMode = UIViewContentModeScaleAspectFit;// 保持比例 + _logoImage.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_logoImage]; + + // 搜索框 + _searchField = [[UITextField alloc] init]; + _searchField.placeholder = @"股票名称/代码"; + NSAttributedString *placeholder = [[NSAttributedString alloc] initWithString:@"股票名称/代码" attributes:@{ + NSForegroundColorAttributeName: [UIColor whiteColor] + }]; + _searchField.attributedPlaceholder = placeholder; + _searchField.textColor = [UIColor whiteColor]; + _searchField.backgroundColor = [UIColor colorWithRed:0.2 green:0.2 blue:0.2 alpha:1]; + _searchField.layer.cornerRadius = 15; + _searchField.leftView = [[UIImageView alloc] initWithImage:[UIImage systemImageNamed:@"magnifyingglass"]]; + _searchField.leftViewMode = UITextFieldViewModeAlways; + _searchField.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_searchField]; + + // 市场配置 + _flagIcon = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"singapore_flag"]]; + _flagIcon.contentMode = UIViewContentModeScaleAspectFit; + _flagIcon.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_flagIcon]; + + // 消息 + _messageBtn = [UIButton buttonWithType:UIButtonTypeSystem]; + UIButtonConfiguration *config = [UIButtonConfiguration plainButtonConfiguration]; + config.image = [UIImage systemImageNamed:@"message"]; + config.baseForegroundColor = [UIColor whiteColor]; + // 富文本 + NSAttributedString *attributedTitle = [[NSAttributedString alloc] initWithString:@"15" attributes:@{ + NSFontAttributeName: [UIFont systemFontOfSize:10], + NSForegroundColorAttributeName: [UIColor whiteColor] + }]; + config.attributedTitle = attributedTitle; + config.imagePadding = -5; + config.contentInsets = NSDirectionalEdgeInsetsMake(0, 0, 0, 0);// 内容边距 + [_messageBtn setConfiguration:config]; + _messageBtn.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_messageBtn]; + + // 功能按钮数组初始化 + _functionBtns = [NSMutableArray array]; + for (NSDictionary *dict in _functionIcons) { + UIButtonConfiguration *config = [UIButtonConfiguration plainButtonConfiguration]; + + UIImage *logoImage = [UIImage imageNamed:@"logo"]; + UIGraphicsBeginImageContextWithOptions(CGSizeMake(40, 40), NO, 0);// 开启图形上下文,((尺寸,尺寸),是否不透明,缩放因子) + [logoImage drawInRect:CGRectMake(0, 0, 40, 40)];// 调整,等比缩放 + UIImage *resizedLogo = UIGraphicsGetImageFromCurrentImageContext();// 获得调整后的 + UIGraphicsEndImageContext();// 关闭图形上下文 + + config.image = resizedLogo; + // 按钮文字,富文本 + NSAttributedString *titleAttr = [[NSAttributedString alloc] initWithString:dict[@"title"] attributes:@{ + NSFontAttributeName: [UIFont systemFontOfSize:13], + NSForegroundColorAttributeName: [UIColor whiteColor] + }]; + config.attributedTitle = titleAttr; + config.imagePlacement = NSDirectionalRectEdgeTop; + config.imagePadding = 5; + config.baseForegroundColor = [UIColor whiteColor]; + + UIButton *btn = [UIButton buttonWithConfiguration:config primaryAction:nil]; + btn.titleLabel.font = [UIFont systemFontOfSize:12]; + btn.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:btn]; + [_functionBtns addObject:btn]; + } + + // 轮播图视图 + _bannerScrollView = [[UIScrollView alloc] init]; + _bannerScrollView.showsHorizontalScrollIndicator = NO;// 隐藏水平滚动条 + _bannerScrollView.pagingEnabled = YES;// 分页 + _bannerScrollView.delegate = self; + _bannerScrollView.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_bannerScrollView]; + + // 轮播图内容容器 + UIView *bannerContentView = [[UIView alloc] init]; + bannerContentView.translatesAutoresizingMaskIntoConstraints = NO; + [_bannerScrollView addSubview:bannerContentView]; + + // 轮播图片 + NSArray *bannerImageNames = @[@"banner2", @"banner1", @"banner2", @"banner1"]; + NSMutableArray *bannerImages = [NSMutableArray array]; + + for (int i = 0; i < bannerImageNames.count; i++) { + UIImageView *bannerImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:bannerImageNames[i]]]; + bannerImage.contentMode = UIViewContentModeScaleAspectFill;// 填充 + bannerImage.clipsToBounds = YES;// 裁剪超出的 + bannerImage.translatesAutoresizingMaskIntoConstraints = NO; + [bannerContentView addSubview:bannerImage]; + [bannerImages addObject:bannerImage]; + + [bannerImage.heightAnchor constraintEqualToAnchor:bannerContentView.heightAnchor].active = YES; + [bannerImage.widthAnchor constraintEqualToAnchor:self.view.widthAnchor].active = YES; + + if (i == 0) { + [bannerImage.leadingAnchor constraintEqualToAnchor:bannerContentView.leadingAnchor].active = YES; + } else { + UIImageView *prevImage = bannerImages[i-1]; + [bannerImage.leadingAnchor constraintEqualToAnchor:prevImage.trailingAnchor].active = YES; + } + } + + // 内容视图宽度(总图片数 * 屏幕宽度) + [bannerContentView.widthAnchor constraintEqualToConstant:self.view.bounds.size.width * bannerImages.count].active = YES; + + [NSLayoutConstraint activateConstraints:@[ + [bannerContentView.leadingAnchor constraintEqualToAnchor:_bannerScrollView.leadingAnchor], + [bannerContentView.trailingAnchor constraintEqualToAnchor:_bannerScrollView.trailingAnchor], + [bannerContentView.topAnchor constraintEqualToAnchor:_bannerScrollView.topAnchor], + [bannerContentView.bottomAnchor constraintEqualToAnchor:_bannerScrollView.bottomAnchor], + [bannerContentView.heightAnchor constraintEqualToAnchor:_bannerScrollView.heightAnchor], + ]]; + + // 初始第一张 + [_bannerScrollView setContentOffset:CGPointMake(self.view.bounds.size.width, 0) animated:NO]; + + // 页码 + _bannerPageControl = [[UIPageControl alloc] init]; + _bannerPageControl.currentPageIndicatorTintColor = [UIColor blueColor]; + _bannerPageControl.pageIndicatorTintColor = [UIColor lightGrayColor];// 其他页码 + _bannerPageControl.numberOfPages = 2; + _bannerPageControl.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_bannerPageControl]; + + // 初始化定时器(2秒一切) + _bannerTimer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(autoScrollBanner) userInfo:nil repeats:YES]; + [[NSRunLoop mainRunLoop] addTimer:_bannerTimer forMode:NSRunLoopCommonModes]; + _currentBannerIndex = 0; + + // 课程咨询活动的容器 + self.tabContainer = [[UIView alloc] init]; + self.tabContainer.backgroundColor = [UIColor blackColor]; + self.tabContainer.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:self.tabContainer]; + + // 课程 + _courseBtn = [UIButton buttonWithType:UIButtonTypeSystem]; + [_courseBtn setTitle:@"课程" forState:UIControlStateNormal]; + _courseBtn.titleLabel.font = [UIFont systemFontOfSize:14]; + [_courseBtn setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal]; + [_courseBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; + _courseBtn.backgroundColor = [UIColor blackColor]; + //[_courseBtn setBackgroundColor:[UIColor blackColor]]; + [_courseBtn addTarget:self action:@selector(tabButtonTapped:) forControlEvents:UIControlEventTouchUpInside]; + _courseBtn.tag = 100; + _courseBtn.translatesAutoresizingMaskIntoConstraints = NO; + [self.tabContainer addSubview:_courseBtn]; + + // 资讯 + _infoBtn = [UIButton buttonWithType:UIButtonTypeSystem]; + [_infoBtn setTitle:@"资讯" forState:UIControlStateNormal]; + _infoBtn.titleLabel.font = [UIFont systemFontOfSize:14]; + //_infoBtn.backgroundColor = [UIColor blackColor]; + [_infoBtn setBackgroundColor:[UIColor blackColor]]; + [_infoBtn setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal]; + [_infoBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; + [_infoBtn addTarget:self action:@selector(tabButtonTapped:) forControlEvents:UIControlEventTouchUpInside]; + _infoBtn.tag = 101; + _infoBtn.translatesAutoresizingMaskIntoConstraints = NO; + [self.tabContainer addSubview:_infoBtn]; + + // 活动 + _activityBtn = [UIButton buttonWithType:UIButtonTypeSystem]; + [_activityBtn setTitle:@"活动" forState:UIControlStateNormal]; + _activityBtn.titleLabel.font = [UIFont systemFontOfSize:14]; + //_activityBtn.backgroundColor = [UIColor blackColor]; + [_activityBtn setBackgroundColor:[UIColor blackColor]]; + [_activityBtn setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal]; + [_activityBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; + [_activityBtn addTarget:self action:@selector(tabButtonTapped:) forControlEvents:UIControlEventTouchUpInside]; + _activityBtn.tag = 102; + _activityBtn.translatesAutoresizingMaskIntoConstraints = NO; + [self.tabContainer addSubview:_activityBtn]; + + // 课程下划线 + _courseUnderline = [[UIView alloc] init]; + _courseUnderline.backgroundColor = [UIColor blueColor]; + _courseUnderline.hidden = YES; + _courseUnderline.translatesAutoresizingMaskIntoConstraints = NO; + [self.tabContainer addSubview:_courseUnderline]; + + // 资讯下划线 + _infoUnderline = [[UIView alloc] init]; + _infoUnderline.backgroundColor = [UIColor blueColor]; + _infoUnderline.hidden = YES; + _infoUnderline.translatesAutoresizingMaskIntoConstraints = NO; + [self.tabContainer addSubview:_infoUnderline]; + + // 活动下划线 + _activityUnderline = [[UIView alloc] init]; + _activityUnderline.backgroundColor = [UIColor blueColor]; + _activityUnderline.hidden = YES; + _activityUnderline.translatesAutoresizingMaskIntoConstraints = NO; + [self.tabContainer addSubview:_activityUnderline]; + + // 课程列表TableView + _courseTableView = [[UITableView alloc] init]; + _courseTableView.backgroundColor = [UIColor blackColor]; + _courseTableView.separatorStyle = UITableViewCellSeparatorStyleNone;// 隐藏分割线 + [_courseTableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"CourseCell"]; + _courseTableView.delegate = self; + _courseTableView.dataSource = self;// 数据源 + _courseTableView.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_courseTableView]; + + // 红包 + _redPacketIcon = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo"]]; + _redPacketIcon.contentMode = UIViewContentModeScaleAspectFit; + _redPacketIcon.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_redPacketIcon]; + + NSArray *tabItems = @[ + @{@"title":@"首页", @"icon":@"house.fill", @"selected":@YES}, + @{@"title":@"行情", @"icon":@"chart.line.uptrend.xyaxis", @"selected":@NO}, + @{@"title":@"自选", @"icon":@"plus", @"selected":@NO}, + @{@"title":@"我的", @"icon":@"person", @"selected":@NO} + ]; + self.commonTabBar = [[CommonTabBar alloc] initWithTabItems:tabItems]; + self.commonTabBar.delegate = self; + [self.view addSubview:self.commonTabBar]; + + // 登录提示 + _successLabel = [[UILabel alloc] init]; + _successLabel.text = @"登录成功"; + _successLabel.font = [UIFont systemFontOfSize:20]; + _successLabel.textColor = [UIColor whiteColor]; + _successLabel.numberOfLines = 0; + _successLabel.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_successLabel]; + + + // 标签容器和按钮约束 + [NSLayoutConstraint activateConstraints:@[ + // 标签容器,轮播图下15,左15,右15,高30 + [self.tabContainer.topAnchor constraintEqualToAnchor: _bannerScrollView.bottomAnchor constant:15], + [self.tabContainer.leadingAnchor constraintEqualToAnchor: self.view.leadingAnchor constant:15], + [self.tabContainer.trailingAnchor constraintEqualToAnchor: self.view.trailingAnchor constant:-15], + [self.tabContainer.heightAnchor constraintEqualToConstant:30], + + // 按钮均分宽度 + // 课程左齐容器,垂直居中,宽度1/3 + [_courseBtn.leadingAnchor constraintEqualToAnchor: self.tabContainer.leadingAnchor], + [_courseBtn.centerYAnchor constraintEqualToAnchor: self.tabContainer.centerYAnchor], + [_courseBtn.widthAnchor constraintEqualToAnchor: self.tabContainer.widthAnchor multiplier:1.0/3.0], + + // 咨询左对齐课程右侧 + [_infoBtn.leadingAnchor constraintEqualToAnchor: _courseBtn.trailingAnchor], + [_infoBtn.centerYAnchor constraintEqualToAnchor: self.tabContainer.centerYAnchor], + [_infoBtn.widthAnchor constraintEqualToAnchor: self.tabContainer.widthAnchor multiplier:1.0/3.0], + + // 活动左对齐咨询右侧 + [_activityBtn.leadingAnchor constraintEqualToAnchor: _infoBtn.trailingAnchor], + [_activityBtn.trailingAnchor constraintEqualToAnchor: self.tabContainer.trailingAnchor], + [_activityBtn.centerYAnchor constraintEqualToAnchor: self.tabContainer.centerYAnchor], + + // 下划线约束 + // 底部对齐容器,在button下方正中,宽30高2 + [_courseUnderline.bottomAnchor constraintEqualToAnchor: self.tabContainer.bottomAnchor], + [_courseUnderline.centerXAnchor constraintEqualToAnchor: _courseBtn.centerXAnchor], + [_courseUnderline.widthAnchor constraintEqualToConstant:30], + [_courseUnderline.heightAnchor constraintEqualToConstant:2], + + [_infoUnderline.bottomAnchor constraintEqualToAnchor: self.tabContainer.bottomAnchor], + [_infoUnderline.centerXAnchor constraintEqualToAnchor: _infoBtn.centerXAnchor], + [_infoUnderline.widthAnchor constraintEqualToConstant:30], + [_infoUnderline.heightAnchor constraintEqualToConstant:2], + + [_activityUnderline.bottomAnchor constraintEqualToAnchor: self.tabContainer.bottomAnchor], + [_activityUnderline.centerXAnchor constraintEqualToAnchor: _activityBtn.centerXAnchor], + [_activityUnderline.widthAnchor constraintEqualToConstant:30], + [_activityUnderline.heightAnchor constraintEqualToConstant:2], + ]]; +} + +-(void) setupConstraints{ + // 登录成功提示 + [NSLayoutConstraint activateConstraints:@[ + [_successLabel.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor],// 水平居中 + [_successLabel.centerYAnchor constraintEqualToAnchor:self.view.centerYAnchor],// 垂直居中 + [_successLabel.widthAnchor constraintEqualToConstant:80], + [_successLabel.heightAnchor constraintEqualToConstant:30], + ]]; + + // Logo图标 搜索框高度下垂直居中,左边距15,宽40高40 + [NSLayoutConstraint activateConstraints:@[ + [_logoImage.centerYAnchor constraintEqualToAnchor: _searchField.centerYAnchor], + [_logoImage.leadingAnchor constraintEqualToAnchor: self.view.leadingAnchor constant:15], + [_logoImage.widthAnchor constraintEqualToConstant:40], + [_logoImage.heightAnchor constraintEqualToConstant:40], + ]]; + + // 搜索栏 父视图下50,logo左10,国旗左10,高30 + [NSLayoutConstraint activateConstraints:@[ + [_searchField.topAnchor constraintEqualToAnchor: self.view.topAnchor constant:50], + [_searchField.leadingAnchor constraintEqualToAnchor: _logoImage.trailingAnchor constant:10], + [_searchField.trailingAnchor constraintEqualToAnchor: _flagIcon.leadingAnchor constant:-10], + [_searchField.heightAnchor constraintEqualToConstant:30], + ]]; + + // 国旗图标 + [NSLayoutConstraint activateConstraints:@[ + [_flagIcon.centerYAnchor constraintEqualToAnchor: _searchField.centerYAnchor], + [_flagIcon.trailingAnchor constraintEqualToAnchor: _messageBtn.leadingAnchor constant:-10], + [_flagIcon.widthAnchor constraintEqualToConstant:40], + [_flagIcon.heightAnchor constraintEqualToConstant:40], + ]]; + + // 消息按钮 + [NSLayoutConstraint activateConstraints:@[ + [_messageBtn.centerYAnchor constraintEqualToAnchor: _searchField.centerYAnchor], + [_messageBtn.trailingAnchor constraintEqualToAnchor: self.view.trailingAnchor constant:-15], + [_messageBtn.widthAnchor constraintEqualToConstant:40], + [_messageBtn.heightAnchor constraintEqualToConstant:40], + ]]; + + // 功能按钮(两行四列,均匀占满整行) + for (int i = 0; i < _functionBtns.count; i++) { + UIButton *btn = _functionBtns[i]; + NSLayoutConstraint *topConstraint; + NSLayoutConstraint *widthConstraint = [btn.widthAnchor constraintEqualToAnchor: self.view.widthAnchor multiplier:0.25 constant:-15]; + NSLayoutConstraint *heightConstraint = [btn.heightAnchor constraintEqualToConstant:70]; + + if (i < 4) { + topConstraint = [btn.topAnchor constraintEqualToAnchor: _searchField.bottomAnchor constant:20]; + NSLayoutConstraint *leadingConstraint; + if (i == 0) { + leadingConstraint = [btn.leadingAnchor constraintEqualToAnchor: self.view.leadingAnchor constant:15]; + } else { + leadingConstraint = [btn.leadingAnchor constraintEqualToAnchor: _functionBtns[i-1].trailingAnchor constant:0]; + } + [NSLayoutConstraint activateConstraints:@[topConstraint, leadingConstraint, widthConstraint, heightConstraint]]; + } else { + topConstraint = [btn.topAnchor constraintEqualToAnchor: _functionBtns[i-4].bottomAnchor constant:10]; + NSLayoutConstraint *leadingConstraint; + if (i == 4) { + leadingConstraint = [btn.leadingAnchor constraintEqualToAnchor: self.view.leadingAnchor constant:15]; + } else { + leadingConstraint = [btn.leadingAnchor constraintEqualToAnchor: _functionBtns[i-1].trailingAnchor constant:0]; + } + [NSLayoutConstraint activateConstraints:@[topConstraint, leadingConstraint, widthConstraint, heightConstraint]]; + } + } + + // 轮播图ScrollView 顶部距离最后一个功能按钮20,左右对齐父视图,高150 + [NSLayoutConstraint activateConstraints:@[ + [_bannerScrollView.topAnchor constraintEqualToAnchor: _functionBtns.lastObject.bottomAnchor constant:20], + [_bannerScrollView.leadingAnchor constraintEqualToAnchor: self.view.leadingAnchor], + [_bannerScrollView.trailingAnchor constraintEqualToAnchor: self.view.trailingAnchor], + [_bannerScrollView.heightAnchor constraintEqualToConstant:150], + ]]; + + // 轮播图PageControl,底部距离轮播图5 + [NSLayoutConstraint activateConstraints:@[ + [_bannerPageControl.bottomAnchor constraintEqualToAnchor: _bannerScrollView.bottomAnchor constant:-5], + [_bannerPageControl.centerXAnchor constraintEqualToAnchor: self.view.centerXAnchor], + ]]; + + // 课程列表 顶部距离标签容器20,左右对齐父视图,底部tabBar + [NSLayoutConstraint activateConstraints:@[ + [_courseTableView.topAnchor constraintEqualToAnchor: self.tabContainer.bottomAnchor constant:20], + [_courseTableView.leadingAnchor constraintEqualToAnchor: self.view.leadingAnchor], + [_courseTableView.trailingAnchor constraintEqualToAnchor: self.view.trailingAnchor], + [_courseTableView.bottomAnchor constraintEqualToAnchor: _commonTabBar.topAnchor] + ]]; + + // 红包图标 + [NSLayoutConstraint activateConstraints:@[ + [_redPacketIcon.bottomAnchor constraintEqualToAnchor: _courseTableView.bottomAnchor constant:-200], + [_redPacketIcon.trailingAnchor constraintEqualToAnchor: self.view.trailingAnchor constant:-20], + [_redPacketIcon.widthAnchor constraintEqualToConstant:60], + [_redPacketIcon.heightAnchor constraintEqualToConstant:60], + ]]; + + // 底部页面按钮 底部对齐安全区域,左右对齐父视图 + [_commonTabBar.bottomAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.bottomAnchor].active = YES; + [_commonTabBar.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor].active = YES; + [_commonTabBar.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor].active = YES; +} + +- (void)setupData { + _functionIcons = @[// 先都用logo + @{@"title":@"全球指数"}, + @{@"title":@"浏览历史"}, + @{@"title":@"机构"}, + @{@"title":@"弘历学堂"}, + @{@"title":@"自选"}, + @{@"title":@"商店"}, + @{@"title":@"猎庄选股"}, + @{@"title":@"智能机器人"} + ]; + + _courseData = @[ + @{@"cover":@"course1", @"title":@"John Lu & Robert Xu “发财线”课程回顾!", @"lecturer":@"Homily Lecturer"}, + @{@"cover":@"event2", @"title":@"孩子炒股老亏钱,多半是废了", @"lecturer":@"kaslana"}, + @{@"cover":@"course3", @"title":@"论持久战", @"lecturer":@"教员先生"} + ]; +} + +#pragma mark - 标签方法 +- (void)tabButtonTapped:(UIButton *)sender { + [self selectButton:sender]; + + // 根据标签切换 + switch (sender.tag) { + case 100: + _courseData = @[ + @{@"cover":@"course1", @"title":@"John Lu & Robert Xu “发财线”课程回顾!", @"lecturer":@"Homily Lecturer"}, + @{@"cover":@"event2", @"title":@"孩子炒股老亏钱,多半是废了", @"lecturer":@"kaslana"}, + @{@"cover":@"course3", @"title":@"论持久战", @"lecturer":@"教员先生"} + ]; + break; + + case 101: + _courseData = @[ + @{@"cover":@"news1", @"title":@"objective-c从入门到入土", @"lecturer":@"财经资讯"}, + @{@"cover":@"news2", @"title":@"线程池核心参数详解", @"lecturer":@"财经资讯"}, + @{@"cover":@"news3", @"title":@"redis集群-主从、哨兵、分片", @"lecturer":@"财经资讯"} + ]; + break; + + case 102: + _courseData = @[ + @{@"cover":@"event1", @"title":@"SpringCloud入门到放弃", @"lecturer":@"活动预告"}, + @{@"cover":@"event2", @"title":@"孩子炒股老亏钱,多半是废了", @"lecturer":@"活动预告"}, + @{@"cover":@"event3", @"title":@"mySQL:从删库到跑路", @"lecturer":@"活动预告"} + ]; + break; + } + + [_courseTableView reloadData]; +} + +- (void) pushMine { + MyViewController *myViewController = [[MyViewController alloc] init]; + [self.navigationController pushViewController:myViewController animated:YES]; +} + +- (void)selectButton:(UIButton *)selectedButton { + _courseBtn.selected = NO; + _infoBtn.selected = NO; + _activityBtn.selected = NO; + + _courseBtn.titleLabel.font = [UIFont systemFontOfSize:14]; + _infoBtn.titleLabel.font = [UIFont systemFontOfSize:14]; + _activityBtn.titleLabel.font = [UIFont systemFontOfSize:14]; + + _courseUnderline.hidden = YES; + _infoUnderline.hidden = YES; + _activityUnderline.hidden = YES; + + // 设置选中按钮状态 + selectedButton.selected = YES; + selectedButton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + + // 显示对应下划线 + if (selectedButton == _courseBtn) { + _courseUnderline.hidden = NO; + } else if (selectedButton == _infoBtn) { + _infoUnderline.hidden = NO; + } else if (selectedButton == _activityBtn) { + _activityUnderline.hidden = NO; + } +} + +- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { + if (scrollView == _bannerScrollView) { + CGFloat screenWidth = self.view.bounds.size.width; + NSInteger currentOffsetX = scrollView.contentOffset.x; + NSInteger page = currentOffsetX / screenWidth; + + // 首尾拼接图无缝跳转 + if (page == 0) { + page = 2; + [scrollView setContentOffset:CGPointMake(screenWidth * page, 0) animated:NO]; + } else if (page == 3) { + page = 1; + [scrollView setContentOffset:CGPointMake(screenWidth * page, 0) animated:NO]; + } + + _currentBannerIndex = (page - 1) % 2; + _bannerPageControl.currentPage = _currentBannerIndex; + + // 重启定时器 + [_bannerTimer invalidate]; + _bannerTimer = [NSTimer scheduledTimerWithTimeInterval:3.0 + target:self + selector:@selector(autoScrollBanner) + userInfo:nil + repeats:YES]; + } +} + +- (void)autoScrollBanner { + CGFloat screenWidth = self.view.bounds.size.width; + + // 直接基于真实索引计算下一页,避免contentOffset的延迟问题 + _currentBannerIndex = (_currentBannerIndex + 1) % 2; // 0→1→0循环 + NSInteger targetPage = _currentBannerIndex + 1; // 对应拼接后的页面(1/2) + + // 处理尾部拼接图的无缝跳转 + if (targetPage > 2) { + targetPage = 1; + [_bannerScrollView setContentOffset:CGPointMake(screenWidth * targetPage, 0) animated:NO]; + } + + [_bannerScrollView setContentOffset:CGPointMake(screenWidth * targetPage, 0) animated:YES]; + _bannerPageControl.currentPage = _currentBannerIndex; +} + +- (void) pushQuotation { + QuotationViewController *quotationViewController = [[QuotationViewController alloc] init]; + [self.navigationController pushViewController:quotationViewController animated:YES]; +} + +- (void)tabBarDidSelectIndex:(NSInteger)index { + if (index == 3) { + [self pushMine]; + } + else if (index == 0) { + + } + else if (index == 1) { + [self pushQuotation]; + } + else if (index == 2) { + // 自选 + } +} + +#pragma mark - 视图即将消失 +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + [_bannerTimer invalidate];// 销毁定时器 + _bannerTimer = nil; +} + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [UIView animateWithDuration:0.3 animations:^{ + self->_successLabel.alpha = 0; + } completion:^(BOOL finished) { + [self->_successLabel removeFromSuperview]; + }]; + }); +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return _courseData.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CourseCell" forIndexPath:indexPath]; + cell.backgroundColor = [UIColor blackColor]; + cell.selectionStyle = UITableViewCellSelectionStyleNone; + + for (UIView *subview in cell.contentView.subviews) { + [subview removeFromSuperview]; + } + + NSDictionary *course = _courseData[indexPath.row]; + UIImageView *coverView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:course[@"cover"]]]; + coverView.contentMode = UIViewContentModeScaleAspectFill; + coverView.clipsToBounds = YES; + coverView.frame = CGRectMake(15, 10, 140, 100); + [cell.contentView addSubview:coverView]; + + UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(170, 10, 220, 60)]; + titleLabel.text = course[@"title"]; + titleLabel.textColor = [UIColor whiteColor]; + titleLabel.font = [UIFont systemFontOfSize:14]; + titleLabel.numberOfLines = 3; + [cell.contentView addSubview:titleLabel]; + + UILabel *lecturerLabel = [[UILabel alloc] initWithFrame:CGRectMake(170, 75, 120, 30)]; + lecturerLabel.text = course[@"lecturer"]; + lecturerLabel.textColor = [UIColor lightGrayColor]; + lecturerLabel.font = [UIFont systemFontOfSize:14]; + [cell.contentView addSubview:lecturerLabel]; + + UIView *bottomLine = [[UIView alloc] init]; + bottomLine.backgroundColor = [UIColor lightGrayColor]; + bottomLine.translatesAutoresizingMaskIntoConstraints = NO; + [cell.contentView addSubview:bottomLine]; + + [NSLayoutConstraint activateConstraints:@[ + [bottomLine.leadingAnchor constraintEqualToAnchor:cell.contentView.leadingAnchor constant:20], // 左边距15 + [bottomLine.trailingAnchor constraintEqualToAnchor:cell.contentView.trailingAnchor constant:-20], // 右边距15 + [bottomLine.bottomAnchor constraintEqualToAnchor:cell.contentView.bottomAnchor], + [bottomLine.heightAnchor constraintEqualToConstant:0.2] + ]]; + + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 120; +} + +@end diff --git a/HC/MLXYViewController.h b/HC/MLXYViewController.h new file mode 100644 index 0000000..a752571 --- /dev/null +++ b/HC/MLXYViewController.h @@ -0,0 +1,16 @@ +// +// MLXYViewController.h +// HC +// +// Created by huilinLi on 2025/11/26. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface MLXYViewController : UIViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/HC/MLXYViewController.m b/HC/MLXYViewController.m new file mode 100644 index 0000000..505923e --- /dev/null +++ b/HC/MLXYViewController.m @@ -0,0 +1,442 @@ +// +// MLXYViewController.m +// HC +// +// Created by huilinLi on 2025/11/26. +// +#import "MLXYViewController.h" +#import "ChartViewController.h" + +@interface MLXYViewController () +@property (nonatomic, strong) UIButton *mlxyButton; +// 大盘指数 +@property (nonatomic, strong) UILabel *marketTitleLabel; +@property (nonatomic, strong) UIView *marketView; +@property (nonatomic, strong) UILabel *marketLine1; +@property (nonatomic, strong) UILabel *marketLine2; +@property (nonatomic, strong) UILabel *marketLine3; +// 板块 +@property (nonatomic, strong) UILabel *sectorTitleLabel; +@property (nonatomic, strong) UIButton *sectorBtn; +// 三个板块卡片(分别配置) +@property (nonatomic, strong) UIView *sectorCard1; +@property (nonatomic, strong) UIView *sectorCard2; +@property (nonatomic, strong) UIView *sectorCard3; +// 股票 +@property (nonatomic, strong) UIView *stockContainer; +@property (nonatomic, strong) UITableView *stockTableView; +// 股票表头 +@property (nonatomic, strong) UIView *stockHeaderView; +// 按钮配置 +@property (nonatomic, strong) UIButtonConfiguration *buttonConfig; +// 板块数据配置 +@property (nonatomic, strong) NSArray *sectorDataConfig; +@end + +@implementation MLXYViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + self.view.backgroundColor = [UIColor blackColor]; + + [self setupButtonConfig]; + [self setupSectorDataConfig]; + + [self setupSubviews]; + [self setupConstraints]; + + [self marketViewClick]; +} + +-(void) marketViewClick{ + _marketView.userInteractionEnabled = YES; + UITapGestureRecognizer *click = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(marketViewPush)]; + [_marketView addGestureRecognizer:click]; +} + +-(void) marketViewPush{ + ChartViewController *chartViewController = [[ChartViewController alloc] init]; + [self.navigationController pushViewController:chartViewController animated:YES]; +} + +- (void)setupButtonConfig { + UIButtonConfiguration *config = [UIButtonConfiguration plainButtonConfiguration]; + config.title = @"更多"; + config.attributedTitle = [[NSAttributedString alloc] initWithString:@"更多" attributes:@{ + NSFontAttributeName: [UIFont systemFontOfSize:14], + NSForegroundColorAttributeName: [UIColor lightGrayColor] + }]; + + UIImage *image = [[UIImage systemImageNamed:@"chevron.right"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; + config.image = image; + config.imagePlacement = NSDirectionalRectEdgeTrailing; // 图片在文字右侧 + config.imagePadding = 1; + + config.baseForegroundColor = [UIColor lightGrayColor]; + + _buttonConfig = config; +} + +- (void)setupSectorDataConfig { + _sectorDataConfig = @[ + @{@"name":@"Health", @"value1":@"1099.683", @"value2":@"27.236",@"value3":@"2.270%"}, + @{@"name":@"Others", @"value1":@"2083.783", @"value2":@"0.000",@"value3":@"0.000%"}, + @{@"name":@"HLKLI", @"value1":@"987.895", @"value2":@"-1.854",@"value3":@"-0.230%"} + ]; +} + +- (void)setupSubviews { + // 马来西亚按钮 + _mlxyButton = [UIButton buttonWithType:UIButtonTypeSystem]; + [_mlxyButton setTitle:@"马来西亚" forState:UIControlStateNormal]; + [_mlxyButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_mlxyButton setBackgroundColor:[UIColor blueColor]]; + _mlxyButton.layer.cornerRadius = 15; + _mlxyButton.titleLabel.font = [UIFont systemFontOfSize:14]; + _mlxyButton.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_mlxyButton]; + + // 大盘指数 + _marketTitleLabel = [[UILabel alloc] init]; + _marketTitleLabel.text = @"大盘指数"; + _marketTitleLabel.textColor = [UIColor whiteColor]; + _marketTitleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + _marketTitleLabel.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_marketTitleLabel]; + + // 绿色卡片 + _marketView = [[UIView alloc] init]; + _marketView.backgroundColor = [UIColor greenColor]; + _marketView.layer.cornerRadius = 8; + _marketView.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_marketView]; + + _marketLine1 = [[UILabel alloc] init]; + _marketLine1.text = @"富时马来西亚KLCI"; + _marketLine1.textColor = [UIColor whiteColor]; + _marketLine1.font = [UIFont fontWithName:@"Helvetica-Bold" size:12]; + _marketLine1.textAlignment = NSTextAlignmentCenter; + _marketLine1.translatesAutoresizingMaskIntoConstraints = NO; + [_marketView addSubview:_marketLine1]; + + _marketLine2 = [[UILabel alloc] init]; + _marketLine2.text = @"1624.500"; + _marketLine2.textColor = [UIColor whiteColor]; + _marketLine2.font = [UIFont boldSystemFontOfSize:17]; + _marketLine2.textAlignment = NSTextAlignmentCenter; + _marketLine2.translatesAutoresizingMaskIntoConstraints = NO; + [_marketView addSubview:_marketLine2]; + + _marketLine3 = [[UILabel alloc] init]; + _marketLine3.text = @"12.760 0.792%"; + _marketLine3.textColor = [UIColor whiteColor]; + _marketLine3.font = [UIFont boldSystemFontOfSize:12]; + _marketLine3.textAlignment = NSTextAlignmentCenter; + _marketLine3.translatesAutoresizingMaskIntoConstraints = NO; + [_marketView addSubview:_marketLine3]; + + // 板块 + _sectorTitleLabel = [[UILabel alloc] init]; + _sectorTitleLabel.text = @"板块"; + _sectorTitleLabel.textColor = [UIColor whiteColor]; + _sectorTitleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + _sectorTitleLabel.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_sectorTitleLabel]; + + _sectorBtn = [UIButton buttonWithConfiguration:self.buttonConfig primaryAction:nil]; + _sectorBtn.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_sectorBtn]; + + _sectorCard1 = [self createSectorCardWithData:self.sectorDataConfig[0]]; + [self.view addSubview:_sectorCard1]; + + _sectorCard2 = [self createSectorCardWithData:self.sectorDataConfig[1]]; + [self.view addSubview:_sectorCard2]; + + _sectorCard3 = [self createSectorCardWithData:self.sectorDataConfig[2]]; + [self.view addSubview:_sectorCard3]; + + // 股票容器 + _stockContainer = [[UIView alloc] init]; + _stockContainer.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_stockContainer]; + + UILabel *stockTitleLabel = [[UILabel alloc] init]; + stockTitleLabel.text = @"股票"; + stockTitleLabel.textColor = [UIColor whiteColor]; + stockTitleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + stockTitleLabel.translatesAutoresizingMaskIntoConstraints = NO; + [_stockContainer addSubview:stockTitleLabel]; + + UIButton *stockBtn = [UIButton buttonWithConfiguration:self.buttonConfig primaryAction:nil]; + stockBtn.translatesAutoresizingMaskIntoConstraints = NO; + [_stockContainer addSubview:stockBtn]; + + // 股票列表表头 + _stockHeaderView = [[UIView alloc] init]; + _stockHeaderView.backgroundColor = [UIColor blackColor]; + _stockHeaderView.translatesAutoresizingMaskIntoConstraints = NO; + [_stockContainer addSubview:_stockHeaderView]; + + NSArray *headerTitles = @[@"名称", @"最新", @"涨幅"]; + for (NSInteger i = 0; i < headerTitles.count; i++) { + UILabel *headerLabel = [[UILabel alloc] init]; + headerLabel.text = headerTitles[i]; + headerLabel.textColor = [UIColor lightGrayColor]; + headerLabel.font = [UIFont systemFontOfSize:12]; + headerLabel.textAlignment = (i == 0) ? NSTextAlignmentLeft : NSTextAlignmentRight; + headerLabel.translatesAutoresizingMaskIntoConstraints = NO; + [_stockHeaderView addSubview:headerLabel]; + + if (i == 0) { + [headerLabel.leadingAnchor constraintEqualToAnchor:_stockHeaderView.leadingAnchor constant:15].active = YES; + } else if (i == 1) { + [headerLabel.widthAnchor constraintEqualToConstant:60].active = YES; + [headerLabel.trailingAnchor constraintEqualToAnchor:_stockHeaderView.trailingAnchor constant:-110].active = YES; + } else { + [headerLabel.widthAnchor constraintEqualToConstant:80].active = YES; + [headerLabel.trailingAnchor constraintEqualToAnchor:_stockHeaderView.trailingAnchor constant:-30].active = YES; + } + [headerLabel.centerYAnchor constraintEqualToAnchor:_stockHeaderView.centerYAnchor].active = YES; + } + + _stockTableView = [[UITableView alloc] init]; + _stockTableView.backgroundColor = [UIColor blackColor]; + _stockTableView.separatorStyle = UITableViewCellSeparatorStyleNone;// 隐藏单元格之间的分隔线 + //SingleLine 默认,1px的分割线 + _stockTableView.delegate = self; + _stockTableView.dataSource = self; + [_stockTableView registerClass:[UITableViewCell class]// 单元格复用类 + forCellReuseIdentifier:@"StockCell"];// 复用标识 + _stockTableView.translatesAutoresizingMaskIntoConstraints = NO; + [_stockContainer addSubview:_stockTableView]; +} + +- (UIView *)createSectorCardWithData:(NSDictionary *)data { + UIView *card = [[UIView alloc] init]; + card.backgroundColor = [UIColor darkGrayColor]; + card.layer.cornerRadius = 8; + card.translatesAutoresizingMaskIntoConstraints = NO; + + // 名称 + UILabel *nameLabel = [[UILabel alloc] init]; + nameLabel.text = data[@"name"]; + nameLabel.textColor = [UIColor whiteColor]; + nameLabel.font = [UIFont systemFontOfSize:14]; + nameLabel.translatesAutoresizingMaskIntoConstraints = NO; + [card addSubview:nameLabel]; + + // 数值 + UILabel *value1Label = [[UILabel alloc] init]; + value1Label.text = data[@"value1"]; + value1Label.textColor = [UIColor greenColor]; + value1Label.font = [UIFont systemFontOfSize:16 weight:UIFontWeightBold]; + value1Label.translatesAutoresizingMaskIntoConstraints = NO; + [card addSubview:value1Label]; + + // 涨幅 + UILabel *value2Label = [[UILabel alloc] init]; + value2Label.text = data[@"value2"]; + value2Label.textColor = [UIColor greenColor]; + value2Label.font = [UIFont systemFontOfSize:12]; + value2Label.translatesAutoresizingMaskIntoConstraints = NO; + [card addSubview:value2Label]; + + UILabel *value3Label = [[UILabel alloc] init]; + value3Label.text = data[@"value3"]; + value3Label.textColor = [UIColor greenColor]; + value3Label.font = [UIFont systemFontOfSize:12]; + value3Label.translatesAutoresizingMaskIntoConstraints = NO; + [card addSubview:value3Label]; + + [NSLayoutConstraint activateConstraints:@[ + [nameLabel.topAnchor constraintEqualToAnchor:card.topAnchor constant:7], + [nameLabel.leadingAnchor constraintEqualToAnchor:card.leadingAnchor constant:10], + + [value1Label.topAnchor constraintEqualToAnchor:nameLabel.bottomAnchor constant:10], + [value1Label.leadingAnchor constraintEqualToAnchor:card.leadingAnchor constant:10], + + [value2Label.topAnchor constraintEqualToAnchor:value1Label.bottomAnchor constant:7], + [value2Label.leadingAnchor constraintEqualToAnchor:card.leadingAnchor constant:10], + + [value3Label.topAnchor constraintEqualToAnchor:value2Label.bottomAnchor constant:6], + [value3Label.leadingAnchor constraintEqualToAnchor:card.leadingAnchor constant:10] + ]]; + + return card; +} + +- (void)setupConstraints { + // 马来西亚按钮 + NSLayoutConstraint *btnTop = [_mlxyButton.topAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.topAnchor]; + NSLayoutConstraint *btnLeft = [_mlxyButton.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor constant:15]; + NSLayoutConstraint *btnWidth = [_mlxyButton.widthAnchor constraintEqualToConstant:90]; + NSLayoutConstraint *btnHeight = [_mlxyButton.heightAnchor constraintEqualToConstant:30]; + [NSLayoutConstraint activateConstraints:@[btnTop, btnLeft, btnWidth, btnHeight]]; + + // 大盘 + NSLayoutConstraint *marketTitleTop = [_marketTitleLabel.topAnchor constraintEqualToAnchor:_mlxyButton.bottomAnchor constant:10]; + NSLayoutConstraint *marketTitleLeft = [_marketTitleLabel.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor constant:15]; + [NSLayoutConstraint activateConstraints:@[marketTitleTop, marketTitleLeft]]; + + NSLayoutConstraint *marketCardTop = [_marketView.topAnchor constraintEqualToAnchor:_marketTitleLabel.bottomAnchor constant:10]; + NSLayoutConstraint *marketCardLeft = [_marketView.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor constant:15]; + NSLayoutConstraint *marketCardWidth = [_marketView.widthAnchor constraintEqualToAnchor:self.view.widthAnchor multiplier:0.3]; + NSLayoutConstraint *marketCardHeight = [_marketView.heightAnchor constraintEqualToConstant:100]; + [NSLayoutConstraint activateConstraints:@[marketCardTop, marketCardLeft, marketCardWidth, marketCardHeight]]; + + NSLayoutConstraint *line1Top = [_marketLine1.topAnchor constraintEqualToAnchor:_marketView.topAnchor constant:10]; + NSLayoutConstraint *line1CenterX = [_marketLine1.centerXAnchor constraintEqualToAnchor:_marketView.centerXAnchor]; + + NSLayoutConstraint *line2Top = [_marketLine2.topAnchor constraintEqualToAnchor:_marketLine1.bottomAnchor constant:15]; + NSLayoutConstraint *line2CenterX = [_marketLine2.centerXAnchor constraintEqualToAnchor:_marketView.centerXAnchor]; + + NSLayoutConstraint *line3Top = [_marketLine3.topAnchor constraintEqualToAnchor:_marketLine2.bottomAnchor constant:12]; + NSLayoutConstraint *line3CenterX = [_marketLine3.centerXAnchor constraintEqualToAnchor:_marketView.centerXAnchor]; + + [NSLayoutConstraint activateConstraints:@[line1Top, line1CenterX, line2Top, line2CenterX, line3Top, line3CenterX]]; + + // 板块 + NSLayoutConstraint *sectorTitleTop = [_sectorTitleLabel.topAnchor constraintEqualToAnchor:_marketView.bottomAnchor constant:20]; + NSLayoutConstraint *sectorTitleLeft = [_sectorTitleLabel.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor constant:15]; + [NSLayoutConstraint activateConstraints:@[sectorTitleTop, sectorTitleLeft]]; + + NSLayoutConstraint *sectorBtnTop = [_sectorBtn.centerYAnchor constraintEqualToAnchor:_sectorTitleLabel.centerYAnchor]; + NSLayoutConstraint *sectorBtnRight = [_sectorBtn.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor constant:-15]; + [NSLayoutConstraint activateConstraints:@[sectorBtnTop, sectorBtnRight]]; + + NSLayoutConstraint *card1Top = [_sectorCard1.topAnchor constraintEqualToAnchor:_sectorTitleLabel.bottomAnchor constant:10]; + NSLayoutConstraint *card1Left = [_sectorCard1.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor constant:8]; + NSLayoutConstraint *card1Width = [_sectorCard1.widthAnchor constraintEqualToAnchor:self.view.widthAnchor multiplier:0.3]; + NSLayoutConstraint *card1Height = [_sectorCard1.heightAnchor constraintEqualToConstant:100]; + [NSLayoutConstraint activateConstraints:@[card1Top, card1Left, card1Width, card1Height]]; + + NSLayoutConstraint *card2Top = [_sectorCard2.topAnchor constraintEqualToAnchor:_sectorCard1.topAnchor]; + NSLayoutConstraint *card2Left = [_sectorCard2.leadingAnchor constraintEqualToAnchor:_sectorCard1.trailingAnchor constant:8]; + NSLayoutConstraint *card2Width = [_sectorCard2.widthAnchor constraintEqualToAnchor:_sectorCard1.widthAnchor]; + NSLayoutConstraint *card2Height = [_sectorCard2.heightAnchor constraintEqualToAnchor:_sectorCard1.heightAnchor]; + [NSLayoutConstraint activateConstraints:@[card2Top, card2Left, card2Width, card2Height]]; + + NSLayoutConstraint *card3Top = [_sectorCard3.topAnchor constraintEqualToAnchor:_sectorCard1.topAnchor]; + NSLayoutConstraint *card3Left = [_sectorCard3.leadingAnchor constraintEqualToAnchor:_sectorCard2.trailingAnchor constant:8]; + NSLayoutConstraint *card3Right = [_sectorCard3.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor constant:-16]; + // *card3Width = [_sectorCard3.widthAnchor constraintEqualToAnchor:_sectorCard1.widthAnchor];都行 + NSLayoutConstraint *card3Height = [_sectorCard3.heightAnchor constraintEqualToAnchor:_sectorCard1.heightAnchor]; + [NSLayoutConstraint activateConstraints:@[card3Top, card3Left, card3Right, card3Height]]; + + // 股票容器 + NSLayoutConstraint *stockTop = [_stockContainer.topAnchor constraintEqualToAnchor:_sectorCard1.bottomAnchor constant:20]; + NSLayoutConstraint *stockLeft = [_stockContainer.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor]; + NSLayoutConstraint *stockRight = [_stockContainer.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor]; + NSLayoutConstraint *stockBottom = [_stockContainer.bottomAnchor constraintEqualToAnchor:self.view.bottomAnchor]; + [NSLayoutConstraint activateConstraints:@[stockTop, stockLeft, stockRight, stockBottom]]; + + UILabel *stockTitleLabel = _stockContainer.subviews[0]; + UIButton *stockBtn = _stockContainer.subviews[1]; + + NSLayoutConstraint *stockTitleTop = [stockTitleLabel.topAnchor constraintEqualToAnchor:_stockContainer.topAnchor constant:15]; + NSLayoutConstraint *stockTitleLeft = [stockTitleLabel.leadingAnchor constraintEqualToAnchor:_stockContainer.leadingAnchor constant:15]; + + NSLayoutConstraint *stockBtnTop = [stockBtn.centerYAnchor constraintEqualToAnchor:stockTitleLabel.centerYAnchor]; + NSLayoutConstraint *stockBtnRight = [stockBtn.trailingAnchor constraintEqualToAnchor:_stockContainer.trailingAnchor constant:-15]; + + [NSLayoutConstraint activateConstraints:@[stockTitleTop, stockTitleLeft, stockBtnTop, stockBtnRight]]; + + // 股票表头 + NSLayoutConstraint *headerTop = [_stockHeaderView.topAnchor constraintEqualToAnchor:stockTitleLabel.bottomAnchor constant:10]; + NSLayoutConstraint *headerLeft = [_stockHeaderView.leadingAnchor constraintEqualToAnchor:_stockContainer.leadingAnchor]; + NSLayoutConstraint *headerRight = [_stockHeaderView.trailingAnchor constraintEqualToAnchor:_stockContainer.trailingAnchor]; + NSLayoutConstraint *headerHeight = [_stockHeaderView.heightAnchor constraintEqualToConstant:30]; + [NSLayoutConstraint activateConstraints:@[headerTop, headerLeft, headerRight, headerHeight]]; + + // 股票列表 + NSLayoutConstraint *tableTop = [_stockTableView.topAnchor constraintEqualToAnchor:_stockHeaderView.bottomAnchor]; + NSLayoutConstraint *tableLeft = [_stockTableView.leadingAnchor constraintEqualToAnchor:_stockContainer.leadingAnchor]; + NSLayoutConstraint *tableRight = [_stockTableView.trailingAnchor constraintEqualToAnchor:_stockContainer.trailingAnchor]; + NSLayoutConstraint *tableBottom = [_stockTableView.bottomAnchor constraintEqualToAnchor:_stockContainer.bottomAnchor]; + [NSLayoutConstraint activateConstraints:@[tableTop, tableLeft, tableRight, tableBottom]]; +} + +#pragma mark - UITableView +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return 4; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"StockCell" forIndexPath:indexPath]; + cell.backgroundColor = [UIColor blackColor]; + cell.selectionStyle = UITableViewCellSelectionStyleNone; + + // 清空复用内容 + [cell.contentView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; + + NSArray *stocks = @[ + @{@"name":@"PEGASUS HEIGHTS BERHAD", @"code":@"4464", @"price":@"0.010", @"value2":@"100.000%"}, + @{@"name":@"SMTRACK BERHAD", @"code":@"0169", @"price":@"0.010", @"value2":@"100.000%"}, + @{@"name":@"TXCD BERHAD - ICPS 2020/2030", @"code":@"7145PA", @"price":@"0.020", @"value2":@"33.333%"}, + @{@"name":@"DNONCE TECHNOLOGY BHD", @"code":@"7114", @"price":@"0.040", @"value2":@"33.333%"} + ]; + NSDictionary *stock = stocks[indexPath.row]; + + // 名称 + UILabel *nameLabel = [[UILabel alloc] init]; + nameLabel.text = stock[@"name"]; + nameLabel.textColor = [UIColor whiteColor]; + nameLabel.font = [UIFont systemFontOfSize:14]; + nameLabel.numberOfLines = 1; + nameLabel.lineBreakMode = NSLineBreakByTruncatingTail; + nameLabel.translatesAutoresizingMaskIntoConstraints = NO; + [cell.contentView addSubview:nameLabel]; + + // 代码 + UILabel *codeLabel = [[UILabel alloc] init]; + codeLabel.text = stock[@"code"]; + codeLabel.textColor = [UIColor lightGrayColor]; + codeLabel.font = [UIFont systemFontOfSize:12]; + codeLabel.translatesAutoresizingMaskIntoConstraints = NO; + [cell.contentView addSubview:codeLabel]; + + // 价格 + UILabel *priceLabel = [[UILabel alloc] init]; + priceLabel.text = stock[@"price"]; + priceLabel.textColor = [UIColor greenColor]; + priceLabel.font = [UIFont systemFontOfSize:14]; + priceLabel.textAlignment = NSTextAlignmentRight; + priceLabel.translatesAutoresizingMaskIntoConstraints = NO; + [cell.contentView addSubview:priceLabel]; + + // 涨幅 + UILabel *value2Label = [[UILabel alloc] init]; + value2Label.text = stock[@"value2"]; + value2Label.textColor = [UIColor greenColor]; + value2Label.font = [UIFont systemFontOfSize:14]; + value2Label.textAlignment = NSTextAlignmentRight; + value2Label.translatesAutoresizingMaskIntoConstraints = NO; + [cell.contentView addSubview:value2Label]; + + // 约束 + [NSLayoutConstraint activateConstraints:@[ + [nameLabel.leadingAnchor constraintEqualToAnchor:cell.contentView.leadingAnchor constant:15], + [nameLabel.topAnchor constraintEqualToAnchor:cell.contentView.topAnchor constant:10], + [nameLabel.trailingAnchor constraintLessThanOrEqualToAnchor:priceLabel.leadingAnchor constant:-10], + + [codeLabel.leadingAnchor constraintEqualToAnchor:cell.contentView.leadingAnchor constant:15], + [codeLabel.topAnchor constraintEqualToAnchor:nameLabel.bottomAnchor constant:5], + + [priceLabel.widthAnchor constraintEqualToConstant:60], + [priceLabel.trailingAnchor constraintEqualToAnchor:value2Label.leadingAnchor constant:-10], + [priceLabel.centerYAnchor constraintEqualToAnchor:cell.contentView.centerYAnchor], + + [value2Label.widthAnchor constraintEqualToConstant:80], + [value2Label.trailingAnchor constraintEqualToAnchor:cell.contentView.trailingAnchor constant:-15], + [value2Label.centerYAnchor constraintEqualToAnchor:cell.contentView.centerYAnchor] + ]]; + + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 60; +} + +@end diff --git a/HC/MyViewController.h b/HC/MyViewController.h new file mode 100644 index 0000000..569d5f2 --- /dev/null +++ b/HC/MyViewController.h @@ -0,0 +1,18 @@ +// +// MyViewController.h +// HC +// +// Created by huilinLi on 2025/11/25. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@class CommonTabBar; + +@interface MyViewController : UIViewController +@property (nonatomic, strong) CommonTabBar *tabBar; +@property (nonatomic, strong) UIView *lastSettingItem; +@end +NS_ASSUME_NONNULL_END diff --git a/HC/MyViewController.m b/HC/MyViewController.m new file mode 100644 index 0000000..8c0be44 --- /dev/null +++ b/HC/MyViewController.m @@ -0,0 +1,390 @@ +// +// MyViewController.m +// HC +// +// Created by huilinLi on 2025/11/25. +// + +#import "MyViewController.h" +#import +#import "CommonTabBar.h" +#import "HomeViewController.h" +#import "ViewController.h" +#import "QuotationViewController.h" + +@implementation MyViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + self.view.backgroundColor = [UIColor blackColor]; + + [self setupUI]; +} + +- (void)setupUI { + UIScrollView *scrollView = [[UIScrollView alloc] init]; + scrollView.translatesAutoresizingMaskIntoConstraints = NO; + scrollView.backgroundColor = [UIColor blackColor]; + [self.view addSubview:scrollView]; + + UIView *contentView = [[UIView alloc] init]; + contentView.translatesAutoresizingMaskIntoConstraints = NO; + contentView.backgroundColor = [UIColor blackColor]; + [scrollView addSubview:contentView]; + + [self setupUserHeaderInContentView:contentView]; + [self setupCoinDiamondInContentView:contentView]; + [self setupSettingListInContentView:contentView]; + [self setupLogoutButtonInContentView:contentView]; + [self setupTabBar]; + + [NSLayoutConstraint activateConstraints:@[ + [scrollView.topAnchor constraintEqualToAnchor:self.view.topAnchor], + [scrollView.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor], + [scrollView.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor], + [scrollView.bottomAnchor constraintEqualToAnchor:self.tabBar.topAnchor], + + [contentView.topAnchor constraintEqualToAnchor:scrollView.topAnchor], + [contentView.leadingAnchor constraintEqualToAnchor:scrollView.leadingAnchor], + [contentView.trailingAnchor constraintEqualToAnchor:scrollView.trailingAnchor], + [contentView.bottomAnchor constraintEqualToAnchor:scrollView.bottomAnchor], + [contentView.widthAnchor constraintEqualToAnchor:scrollView.widthAnchor] + ]]; +} + +#pragma mark - 上边儿 +- (void)setupUserHeaderInContentView:(UIView *)contentView { + UIButton *settingBtn = [UIButton buttonWithType:UIButtonTypeSystem]; + [settingBtn setImage:[UIImage systemImageNamed:@"gearshape"] forState:UIControlStateNormal]; + settingBtn.tintColor = [UIColor whiteColor]; + settingBtn.translatesAutoresizingMaskIntoConstraints = NO; + [contentView addSubview:settingBtn]; + + UIImageView *avatar = [self createImageViewWithImage:@"hqz" contentMode:UIViewContentModeScaleAspectFill cornerRadius:40]; + [contentView addSubview:avatar]; + + UILabel *nameLabel = [self createLabelWithText:@"演示机李慧琳" fontSize:18 textColor:[UIColor whiteColor]]; + [contentView addSubview:nameLabel]; + + UILabel *idLabel = [self createLabelWithText:@"ID: 90047681" fontSize:14 textColor:[UIColor whiteColor]]; + [contentView addSubview:idLabel]; + + UIButton *signBtn = [self createButtonWithTitle:@"已签到" bgColor:[UIColor whiteColor] cornerRadius:15]; + [signBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; + [contentView addSubview:signBtn]; + + [NSLayoutConstraint activateConstraints:@[ + [avatar.topAnchor constraintEqualToAnchor:contentView.topAnchor constant:20], + [avatar.leadingAnchor constraintEqualToAnchor:contentView.leadingAnchor constant:20], + [avatar.widthAnchor constraintEqualToConstant:80], + [avatar.heightAnchor constraintEqualToConstant:80], + + [nameLabel.centerYAnchor constraintEqualToAnchor:avatar.centerYAnchor constant:-10], + [nameLabel.leadingAnchor constraintEqualToAnchor:avatar.trailingAnchor constant:15], + + [idLabel.topAnchor constraintEqualToAnchor:nameLabel.bottomAnchor constant:5], + [idLabel.leadingAnchor constraintEqualToAnchor:nameLabel.leadingAnchor], + + [signBtn.centerYAnchor constraintEqualToAnchor:avatar.centerYAnchor], + [signBtn.trailingAnchor constraintEqualToAnchor:contentView.trailingAnchor constant:-20], + [signBtn.widthAnchor constraintEqualToConstant:90], + [signBtn.heightAnchor constraintEqualToConstant:30], + + [settingBtn.topAnchor constraintEqualToAnchor:contentView.topAnchor constant:-35], + [settingBtn.trailingAnchor constraintEqualToAnchor:contentView.trailingAnchor constant:-20], + [settingBtn.widthAnchor constraintEqualToConstant:24], + [settingBtn.heightAnchor constraintEqualToConstant:24] + ]]; +} + +#pragma mark - 金币钻石 +- (void)setupCoinDiamondInContentView:(UIView *)contentView { + NSArray *itemConfigs = @[ + @{@"icon":@"hqz", @"text":@"6011.56"}, + @{@"icon":@"hqz", @"text":@"0"} + ]; + + UIView *containerView = [[UIView alloc] init]; + containerView.translatesAutoresizingMaskIntoConstraints = NO; + [contentView addSubview:containerView]; + + for (int i = 0; i < itemConfigs.count; i++) { + NSDictionary *config = itemConfigs[i]; + UIButton *btn = [self createInfoButtonWithConfig:config]; + btn.tag = 100 + i; + [containerView addSubview:btn]; + + [NSLayoutConstraint activateConstraints:@[ + [btn.topAnchor constraintEqualToAnchor:containerView.topAnchor], + [btn.bottomAnchor constraintEqualToAnchor:containerView.bottomAnchor], + [btn.widthAnchor constraintEqualToAnchor:containerView.widthAnchor multiplier:0.5], + (i == 0) ? [btn.leadingAnchor constraintEqualToAnchor:containerView.leadingAnchor] : [btn.trailingAnchor constraintEqualToAnchor:containerView.trailingAnchor] + ]]; + } + + UIView *verticalDivider = [self createVerticalDivider]; + [containerView addSubview:verticalDivider]; + + [NSLayoutConstraint activateConstraints:@[ + [containerView.topAnchor constraintEqualToAnchor:contentView.subviews[1].bottomAnchor constant:20], + [containerView.leadingAnchor constraintEqualToAnchor:contentView.leadingAnchor], + [containerView.trailingAnchor constraintEqualToAnchor:contentView.trailingAnchor], + [containerView.heightAnchor constraintEqualToConstant:80], + + [verticalDivider.centerXAnchor constraintEqualToAnchor:containerView.centerXAnchor], + [verticalDivider.topAnchor constraintEqualToAnchor:containerView.topAnchor constant:10], + [verticalDivider.bottomAnchor constraintEqualToAnchor:containerView.bottomAnchor constant:-10], + [verticalDivider.widthAnchor constraintEqualToConstant:0.5] + ]]; +} + +#pragma mark - 设置列表 +- (void)setupSettingListInContentView:(UIView *)contentView { + NSArray *rowTexts = @[ + @"账号与安全", + @"服务期限", + @"行情设置", + @"通用设置", + @"金币记录", + @"分享奖励", + @"联系我们", + @"新版本更新", + @"意见反馈", + @"关于Homily Chart" + ]; + + // 金币钻石容器 + UIView *coinContainer = contentView.subviews.lastObject; + CGFloat topOffset = 0; + + for (int i = 0; i < rowTexts.count; i++) { + UIView *itemView = [self createCommonRowWithText:rowTexts[i]]; + [contentView addSubview:itemView]; + + [NSLayoutConstraint activateConstraints:@[ + [itemView.topAnchor constraintEqualToAnchor:coinContainer.bottomAnchor constant:topOffset + 20], + [itemView.leadingAnchor constraintEqualToAnchor:contentView.leadingAnchor], + [itemView.trailingAnchor constraintEqualToAnchor:contentView.trailingAnchor], + [itemView.heightAnchor constraintEqualToConstant:60] + ]]; + + if (i < rowTexts.count - 1) { + UIView *divider = [self createDividerWithLeading:20]; + [contentView addSubview:divider]; + [NSLayoutConstraint activateConstraints:@[ + [divider.topAnchor constraintEqualToAnchor:itemView.bottomAnchor], + [divider.leadingAnchor constraintEqualToAnchor:contentView.leadingAnchor constant:20], + [divider.trailingAnchor constraintEqualToAnchor:contentView.trailingAnchor], + [divider.heightAnchor constraintEqualToConstant:0.5] + ]]; + } + + topOffset += 60; + } + + self.lastSettingItem = contentView.subviews.lastObject; +} + +#pragma mark - 退出登录 +- (void)setupLogoutButtonInContentView:(UIView *)contentView { + UIButton *logoutBtn = [UIButton buttonWithType:UIButtonTypeSystem]; + [logoutBtn setTitle:@"退出登录" forState:UIControlStateNormal]; + [logoutBtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal]; + logoutBtn.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; + logoutBtn.translatesAutoresizingMaskIntoConstraints = NO; + [logoutBtn addTarget:self action:@selector(logoutTapped) forControlEvents:UIControlEventTouchUpInside]; + [contentView addSubview:logoutBtn]; + + [NSLayoutConstraint activateConstraints:@[ + [logoutBtn.topAnchor constraintEqualToAnchor:self.lastSettingItem.bottomAnchor constant:20], + [logoutBtn.centerXAnchor constraintEqualToAnchor:contentView.centerXAnchor], + [logoutBtn.widthAnchor constraintEqualToConstant:120], + [logoutBtn.heightAnchor constraintEqualToConstant:40], + + [contentView.bottomAnchor constraintEqualToAnchor:logoutBtn.bottomAnchor constant:20] + ]]; +} + +#pragma mark - 退出登录方法 +- (void)logoutTapped { + ViewController *loginVC = [[ViewController alloc] init]; + loginVC.hidesBottomBarWhenPushed = YES; // 隐藏TabBar + [self.navigationController pushViewController:loginVC animated:YES]; +} + +#pragma mark - 底部TabBar +- (void)setupTabBar { + NSArray *tabItems = @[ + @{@"title":@"首页", @"icon":@"house.fill", @"selected":@NO}, + @{@"title":@"行情", @"icon":@"chart.line.uptrend.xyaxis", @"selected":@NO}, + @{@"title":@"自选", @"icon":@"plus", @"selected":@NO}, + @{@"title":@"我的", @"icon":@"person", @"selected":@YES} + ]; + self.tabBar = [[CommonTabBar alloc] initWithTabItems:tabItems]; + self.tabBar.delegate = self; + self.tabBar.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:self.tabBar]; + + [NSLayoutConstraint activateConstraints:@[ + [self.tabBar.bottomAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.bottomAnchor], + [self.tabBar.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor], + [self.tabBar.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor], + [self.tabBar.heightAnchor constraintEqualToConstant:49] + ]]; +} + +#pragma mark - 工具方法 +- (UIButton *)createInfoButtonWithConfig:(NSDictionary *)config { + UIButtonConfiguration *btnConfig = [UIButtonConfiguration plainButtonConfiguration]; + + NSString *iconName = config[@"icon"]; + UIImage *iconImage = [UIImage imageNamed:iconName]; + + if (!iconImage) { + UIImageSymbolConfiguration *symbolConfig = [UIImageSymbolConfiguration configurationWithPointSize:24 weight:UIFontWeightRegular]; + iconImage = [UIImage systemImageNamed:@"dollarsign.circle" withConfiguration:symbolConfig]; + } else { + UIGraphicsBeginImageContextWithOptions(CGSizeMake(40, 40), NO, 0); + [iconImage drawInRect:CGRectMake(0, 0, 40, 40)]; + iconImage = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + } + + btnConfig.image = iconImage; + btnConfig.imagePlacement = NSDirectionalRectEdgeTop; + btnConfig.imagePadding = 15; + + // 富文本吧 + NSAttributedString *titleAttr = [[NSAttributedString alloc] initWithString:config[@"text"] attributes:@{ + NSFontAttributeName: [UIFont systemFontOfSize:14], + NSForegroundColorAttributeName: [UIColor whiteColor] + }]; + btnConfig.attributedTitle = titleAttr; + + btnConfig.baseBackgroundColor = [UIColor clearColor]; + btnConfig.baseForegroundColor = [UIColor whiteColor]; + + UIButton *btn = [UIButton buttonWithConfiguration:btnConfig primaryAction:nil]; + btn.translatesAutoresizingMaskIntoConstraints = NO; + + [btn addTarget:self action:@selector(infoButtonTapped:) forControlEvents:UIControlEventTouchUpInside]; + + return btn; +} + +- (void)infoButtonTapped:(UIButton *)sender { + if (sender.tag == 100) { + NSLog(@"金币按钮被点击"); + } else if (sender.tag == 101) { + NSLog(@"钻石按钮被点击"); + } +} + +- (UIView *)createVerticalDivider { + UIView *divider = [[UIView alloc] init]; + divider.backgroundColor = [UIColor colorWithRed:0.3 green:0.3 blue:0.3 alpha:1]; + divider.translatesAutoresizingMaskIntoConstraints = NO; + return divider; +} + +- (UIImageView *)createImageViewWithImage:(NSString *)imageName contentMode:(UIViewContentMode)mode cornerRadius:(CGFloat)radius { + UIImageView *uiImageView = [[UIImageView alloc] init]; + uiImageView.image = [UIImage imageNamed:imageName]; + uiImageView.contentMode = mode; + uiImageView.layer.cornerRadius = radius; + uiImageView.clipsToBounds = YES; + uiImageView.translatesAutoresizingMaskIntoConstraints = NO; + return uiImageView; +} + +- (UILabel *)createLabelWithText:(NSString *)text fontSize:(CGFloat)size textColor:(UIColor *)color { + UILabel *label = [[UILabel alloc] init]; + label.text = text; + label.font = [UIFont systemFontOfSize:size weight:UIFontWeightMedium]; + label.textColor = color; + label.translatesAutoresizingMaskIntoConstraints = NO; + return label; +} + +- (UIButton *)createButtonWithTitle:(NSString *)title bgColor:(UIColor *)bgColor cornerRadius:(CGFloat)radius { + UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem]; + [btn setTitle:title forState:UIControlStateNormal]; + [btn setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal]; + btn.backgroundColor = bgColor; + btn.layer.cornerRadius = radius; + btn.translatesAutoresizingMaskIntoConstraints = NO; + return btn; +} + +- (UIView *)createDividerWithLeading:(CGFloat)leading { + UIView *divider = [[UIView alloc] init]; + divider.backgroundColor = [UIColor colorWithRed:0.3 green:0.3 blue:0.3 alpha:1]; + divider.translatesAutoresizingMaskIntoConstraints = NO; + return divider; +} + +- (UIView *)createCommonRowWithText:(NSString *)text { + UIView *rowView = [[UIView alloc] init]; + rowView.translatesAutoresizingMaskIntoConstraints = NO; + rowView.backgroundColor = [UIColor clearColor]; + + UIImageView *logoView = [self createImageViewWithImage:@"hqz" + contentMode:UIViewContentModeScaleAspectFit + cornerRadius:0]; + logoView.tintColor = [UIColor blueColor]; + [rowView addSubview:logoView]; + + UILabel *textLabel = [self createLabelWithText:text + fontSize:16 + textColor:[UIColor whiteColor]]; + [rowView addSubview:textLabel]; + + UIButton *arrowBtn = [UIButton buttonWithType:UIButtonTypeSystem]; + [arrowBtn setImage:[UIImage systemImageNamed:@"chevron.right"] forState:UIControlStateNormal]; + [arrowBtn setTintColor:[UIColor lightGrayColor]]; + arrowBtn.translatesAutoresizingMaskIntoConstraints = NO; + [rowView addSubview:arrowBtn]; + + [NSLayoutConstraint activateConstraints:@[ + // logo左侧固定 + [logoView.centerYAnchor constraintEqualToAnchor:rowView.centerYAnchor], + [logoView.leadingAnchor constraintEqualToAnchor:rowView.leadingAnchor constant:20], + [logoView.widthAnchor constraintEqualToConstant:24], + [logoView.heightAnchor constraintEqualToConstant:24], + + // 文字 logo右侧 + [textLabel.centerYAnchor constraintEqualToAnchor:logoView.centerYAnchor], + [textLabel.leadingAnchor constraintEqualToAnchor:logoView.trailingAnchor constant:15], + + // 箭头 右侧固定 + [arrowBtn.centerYAnchor constraintEqualToAnchor:logoView.centerYAnchor], + [arrowBtn.trailingAnchor constraintEqualToAnchor:rowView.trailingAnchor constant:-20] + ]]; + + return rowView; +} + +#pragma mark - TabBar +- (void) pushHome { + HomeViewController *homeViewController = [[HomeViewController alloc] init]; + [self.navigationController pushViewController:homeViewController animated:YES]; +} + +- (void) pushQuotation { + QuotationViewController *quotationViewController = [[QuotationViewController alloc] init]; + [self.navigationController pushViewController:quotationViewController animated:YES]; +} + +- (void)tabBarDidSelectIndex:(NSInteger)index { + if (index == 3) { + + } else if (index == 0) { + [self pushHome]; + } else if (index == 1) { + [self pushQuotation]; + } else if (index == 2) { + // 自选 + } +} + +@end diff --git a/HC/QuotationViewController.h b/HC/QuotationViewController.h new file mode 100644 index 0000000..6727026 --- /dev/null +++ b/HC/QuotationViewController.h @@ -0,0 +1,16 @@ +// +// QuotationViewController.h +// HC +// +// Created by huilinLi on 2025/11/26. +// + +#import +#import "MLXYViewController.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface QuotationViewController : UIViewController +@end + +NS_ASSUME_NONNULL_END diff --git a/HC/QuotationViewController.m b/HC/QuotationViewController.m new file mode 100644 index 0000000..012dea1 --- /dev/null +++ b/HC/QuotationViewController.m @@ -0,0 +1,258 @@ +// +// QuotationViewController.m +// HC +// +// Created by huilinLi on 2025/11/26. +// + +#import "QuotationViewController.h" +#import "CountryModel.h" +#import "MLXYViewController.h" // 马来西亚 +#import "CNViewController.h" // 中国 +#import "CommonTabBar.h" +#import "HomeViewController.h" +#import "MyViewController.h" + +@interface QuotationViewController () +@property (nonatomic, strong) CommonTabBar *commonTabBar; +@property (nonatomic, strong) NSArray *countries; // 国家列表 +@property (nonatomic, strong) UIViewController *currentChildVC; // 当前显示的子控制器 +@property (nonatomic, strong) UICollectionView *countryTabBar; // 国家选择标签栏 +@property (nonatomic, strong) UIView *contentContainer; // 子控制器容器 +@property (nonatomic, assign) NSInteger selectedIndex; // 当前选中的国家索引 + +// 顶部 +@property (nonatomic, strong) UIImageView *logoImage; // logo +@property (nonatomic, strong) UITextField *searchField; // 搜索框 +@property (nonatomic, strong) UIImageView *flagIcon; // 国旗 +@end + +@implementation QuotationViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + self.view.backgroundColor = [UIColor blackColor]; + + [self initCountries]; + [self setupSubviews]; + [self setupConstraints]; + + // 默认选中第一个 + self.selectedIndex = 0; + [self switchToCountryAtIndex:self.selectedIndex]; +} + +#pragma mark - 初始化国家数据 +- (void)initCountries { + self.countries = @[ + [CountryModel modelWithCode:@"MY" + name:@"马来西亚" + vcClassName:NSStringFromClass([MLXYViewController class])], + [CountryModel modelWithCode:@"CN" + name:@"中国" + vcClassName:NSStringFromClass([CNViewController class])] + ]; +} + +#pragma mark - 创建子视图 +- (void)setupSubviews { + self.logoImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo"]]; + self.logoImage.contentMode = UIViewContentModeScaleAspectFit; + self.logoImage.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:self.logoImage]; + + self.searchField = [[UITextField alloc] init]; + self.searchField.placeholder = @"股票名称/代码"; + NSAttributedString *placeholder = [[NSAttributedString alloc] initWithString:@"股票名称/代码" attributes:@{ + NSForegroundColorAttributeName: [UIColor whiteColor] + }]; + self.searchField.attributedPlaceholder = placeholder; + self.searchField.textColor = [UIColor whiteColor]; + self.searchField.backgroundColor = [UIColor colorWithRed:0.2 green:0.2 blue:0.2 alpha:1]; + self.searchField.layer.cornerRadius = 15; + self.searchField.leftView = [[UIImageView alloc] initWithImage:[UIImage systemImageNamed:@"magnifyingglass"]]; + self.searchField.leftViewMode = UITextFieldViewModeAlways; + self.searchField.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:self.searchField]; + + self.flagIcon = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo"]]; + self.flagIcon.contentMode = UIViewContentModeScaleAspectFit; + self.flagIcon.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:self.flagIcon]; + + UICollectionViewFlowLayout *tabLayout = [[UICollectionViewFlowLayout alloc] init]; + tabLayout.scrollDirection = UICollectionViewScrollDirectionHorizontal;// 横向滚动 + tabLayout.itemSize = CGSizeMake(100, 40); // 每个标签宽100,高40 + tabLayout.minimumInteritemSpacing = 0; + + self.countryTabBar = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:tabLayout]; + self.countryTabBar.backgroundColor = [UIColor blackColor]; + self.countryTabBar.delegate = self; + self.countryTabBar.dataSource = self; + [self.countryTabBar registerClass:[UICollectionViewCell class]// 单元格复用类 + forCellWithReuseIdentifier:@"CountryTabCell"]; + self.countryTabBar.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:self.countryTabBar]; + + // 5. 内容容器,这个承接子视图 + self.contentContainer = [[UIView alloc] init]; + self.contentContainer.backgroundColor = [UIColor blackColor]; + self.contentContainer.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:self.contentContainer]; + + NSArray *tabItems = @[ + @{@"title":@"首页", @"icon":@"house.fill", @"selected":@NO}, + @{@"title":@"行情", @"icon":@"chart.line.uptrend.xyaxis", @"selected":@YES}, + @{@"title":@"自选", @"icon":@"plus", @"selected":@NO}, + @{@"title":@"我的", @"icon":@"person", @"selected":@NO} + ]; + self.commonTabBar = [[CommonTabBar alloc] initWithTabItems:tabItems]; + self.commonTabBar.delegate = self; + self.commonTabBar.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:self.commonTabBar]; +} + +#pragma mark - 布局约束 +- (void)setupConstraints { + // Logo + [NSLayoutConstraint activateConstraints:@[ + [self.logoImage.centerYAnchor constraintEqualToAnchor:self.searchField.centerYAnchor], + [self.logoImage.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor constant:15], + [self.logoImage.widthAnchor constraintEqualToConstant:40], + [self.logoImage.heightAnchor constraintEqualToConstant:40] + ]]; + + // 搜索框 + [NSLayoutConstraint activateConstraints:@[ + [self.searchField.topAnchor constraintEqualToAnchor:self.view.topAnchor constant:50], + [self.searchField.leadingAnchor constraintEqualToAnchor:self.logoImage.trailingAnchor constant:10], + [self.searchField.trailingAnchor constraintEqualToAnchor:self.flagIcon.leadingAnchor constant:-10], + [self.searchField.heightAnchor constraintEqualToConstant:30] + ]]; + + // 国旗 + [NSLayoutConstraint activateConstraints:@[ + [self.flagIcon.centerYAnchor constraintEqualToAnchor:self.searchField.centerYAnchor], + [self.flagIcon.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor constant:-15], + [self.flagIcon.widthAnchor constraintEqualToConstant:40], + [self.flagIcon.heightAnchor constraintEqualToConstant:40] + ]]; + + // 国家 + [NSLayoutConstraint activateConstraints:@[ + [self.countryTabBar.topAnchor constraintEqualToAnchor:self.searchField.bottomAnchor constant:15], + [self.countryTabBar.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor], + [self.countryTabBar.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor], + [self.countryTabBar.heightAnchor constraintEqualToConstant:40] + ]]; + + // 子视图容器 + [NSLayoutConstraint activateConstraints:@[ + [self.contentContainer.topAnchor constraintEqualToAnchor:self.countryTabBar.bottomAnchor], + [self.contentContainer.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor], + [self.contentContainer.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor], + [self.contentContainer.bottomAnchor constraintEqualToAnchor:self.commonTabBar.topAnchor] + ]]; + + // 底部TabBar + [NSLayoutConstraint activateConstraints:@[ + [self.commonTabBar.bottomAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.bottomAnchor], + [self.commonTabBar.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor], + [self.commonTabBar.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor] + ]]; +} + +#pragma mark - 切换子控制器 +- (void)switchToCountryAtIndex:(NSInteger)index { + // 先移除 + if (self.currentChildVC) { + [self.currentChildVC willMoveToParentViewController:nil]; + [self.currentChildVC.view removeFromSuperview]; + [self.currentChildVC removeFromParentViewController]; + self.currentChildVC = nil; + } + + // 创建新的 + CountryModel *selectedCountry = self.countries[index]; + Class childVCClass = NSClassFromString(selectedCountry.vcClassName);// 字符串转Class???? + UIViewController *childVC = [[childVCClass alloc] init]; + + // 添加 + [self addChildViewController:childVC]; + childVC.view.frame = self.contentContainer.bounds;// 适配容器 + childVC.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;// 自适应容器大小 + [self.contentContainer addSubview:childVC.view]; + [childVC didMoveToParentViewController:self]; + + self.currentChildVC = childVC; +} + +#pragma mark - 国家数据源 +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.countries.count; +} + +- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"CountryTabCell" forIndexPath:indexPath]; + cell.backgroundColor = [UIColor blackColor]; + + // 国家名称 + UILabel *nameLabel = [cell viewWithTag:100]; + if (!nameLabel) { + nameLabel = [[UILabel alloc] init]; + nameLabel.tag = 100; + nameLabel.textColor = [UIColor whiteColor]; + nameLabel.font = [UIFont systemFontOfSize:15]; + nameLabel.textAlignment = NSTextAlignmentCenter; + [cell.contentView addSubview:nameLabel]; + nameLabel.frame = cell.contentView.bounds;// 撑满单元格 + } + nameLabel.text = self.countries[indexPath.item].name; + + // 选中下划线 + UIView *selectedLine = [cell viewWithTag:101]; + if (!selectedLine) { + selectedLine = [[UIView alloc] init]; + selectedLine.tag = 101; + selectedLine.backgroundColor = [UIColor blueColor]; + [cell.contentView addSubview:selectedLine]; + selectedLine.frame = CGRectMake(30, cell.contentView.bounds.size.height - 7, 40, 4); + } + selectedLine.hidden = !(indexPath.item == self.selectedIndex); + + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + self.selectedIndex = indexPath.item; + [self.countryTabBar reloadData]; // 刷新标签选中状态 + [self switchToCountryAtIndex:indexPath.item]; // 切换到对应国家页面 +} + +#pragma mark - 底部跳转方法 +- (void)tabBarDidSelectIndex:(NSInteger)index { + switch (index) { + case 0: + [self pushHome]; + break; + case 1: + break; + case 2: + break; + case 3: + [self pushMine]; + break; + } +} + +- (void) pushMine { + MyViewController *myViewController = [[MyViewController alloc] init]; + [self.navigationController pushViewController:myViewController animated:YES]; +} + +- (void) pushHome { + HomeViewController *myViewController = [[HomeViewController alloc] init]; + [self.navigationController pushViewController:myViewController animated:YES]; +} + +@end diff --git a/HC/SceneDelegate.m b/HC/SceneDelegate.m index 738cfd8..9be9ac3 100644 --- a/HC/SceneDelegate.m +++ b/HC/SceneDelegate.m @@ -7,6 +7,8 @@ #import "SceneDelegate.h" #import "AppDelegate.h" +#import "ViewController.h" +#import "ChartViewController.h" @interface SceneDelegate () @@ -16,9 +18,23 @@ - (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions { - // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. - // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. - // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + UIWindowScene *windowScene = (UIWindowScene *)scene; + if (!windowScene) return; + + self.window = [[UIWindow alloc] initWithWindowScene:windowScene]; + // 改用窗口场景的屏幕尺寸(兼容 iOS 26+) + self.window.frame = windowScene.screen.bounds; + self.window.backgroundColor = [UIColor blackColor]; + + //ViewController *loginVC = [[ViewController alloc] init]; + //UINavigationController *navVC = [[UINavigationController alloc] initWithRootViewController:loginVC]; + //self.window.rootViewController = navVC; + // 实例化 ChartViewController + ChartViewController *chartVC = [[ChartViewController alloc] init]; + + // **设置 ChartViewController 为根视图控制器** + self.window.rootViewController = chartVC; + [self.window makeKeyAndVisible]; } diff --git a/HC/StockKLineModel.h b/HC/StockKLineModel.h new file mode 100644 index 0000000..c6aa38f --- /dev/null +++ b/HC/StockKLineModel.h @@ -0,0 +1,36 @@ +// +// StockKLineModel.h +// HomilyChartFake +// +// Created by 洪锡林 on 2025/11/28. +// + + +#import + + +NS_ASSUME_NONNULL_BEGIN + + +@interface StockKLineModel : NSObject + + +@property (nonatomic, copy) NSString *date; // 时间,如 "2025-11-27" +@property (nonatomic, assign) CGFloat open; // 开盘价 +@property (nonatomic, assign) CGFloat close;// 收盘价 +@property (nonatomic, assign) CGFloat high; // 最高价 +@property (nonatomic, assign) CGFloat low; // 最低价 +@property (nonatomic, assign) CGFloat volume; // 成交量 + +// 预留给MA均线(后面章节会用到) +@property (nonatomic, assign) CGFloat ma5; +@property (nonatomic, assign) CGFloat ma10; +@property (nonatomic, assign) CGFloat ma20; + +// 辅助方法:判断是否是阳线(涨) +- (BOOL)isUp; + +@end + + +NS_ASSUME_NONNULL_END diff --git a/HC/StockKLineModel.m b/HC/StockKLineModel.m new file mode 100644 index 0000000..4f3711a --- /dev/null +++ b/HC/StockKLineModel.m @@ -0,0 +1,21 @@ +// +// StockKLineModel.m +// HomilyChartFake +// +// Created by 洪锡林 on 2025/11/28. +// + + +#import "StockKLineModel.h" + + +@implementation StockKLineModel + + +- (BOOL)isUp { + // 在A股,收盘 >= 开盘 认为是阳线(红色),这里包含平盘情况 + return self.close >= self.open; +} + + +@end diff --git a/HC/ViewController.h b/HC/ViewController.h index dd337a3..9e12084 100644 --- a/HC/ViewController.h +++ b/HC/ViewController.h @@ -7,8 +7,7 @@ #import -@interface ViewController : UIViewController - +@interface ViewController : UIViewController @end diff --git a/HC/ViewController.m b/HC/ViewController.m index 5f57644..6c66a4e 100644 --- a/HC/ViewController.m +++ b/HC/ViewController.m @@ -6,17 +6,294 @@ // #import "ViewController.h" +#import "HomeViewController.h" @interface ViewController () +@property (nonatomic, strong) UIImageView *logoImage; +@property (nonatomic, strong) UILabel *headLabel;// 账号密码登录 +@property (nonatomic, strong) UILabel *idLabel;// Homily ID +@property (nonatomic, strong) UILabel *pwdLabel;// 密码 +@property (nonatomic, strong) UITextField *account;// 输入框 +@property (nonatomic, strong) UITextField *pwd; +@property (nonatomic, strong) UIButton *loginButton;// 登录 +@property (nonatomic, strong) UIButton *agreementButton;// 协议 +@property (nonatomic, strong) UILabel *agreementLabel;// 协议文字 +@property (nonatomic, strong) UILabel *loseLabel;// 忘记密码? +@property (nonatomic, strong) UILabel *questionLabel;// 登录遇到问题? +@property (nonatomic, strong) UIButton *emailButton;// 邮箱登录 + @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; - // Do any additional setup after loading the view. + self.view.backgroundColor = [UIColor blackColor]; + self.view.userInteractionEnabled = YES;// 开启视图交互 + [self setupSubviews]; + [self setupConstraints]; + + NSLog(@"看看导航控制器:%@", self.navigationController ? @"有" : @"哪去了"); +} +#pragma mark - 控件 +-(void) setupSubviews{ + _headLabel = [[UILabel alloc] init]; + _headLabel.text = @"账号密码登录"; + _headLabel.textColor = [UIColor whiteColor]; + _headLabel.font = [UIFont systemFontOfSize:20]; + _headLabel.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_headLabel]; + + // 账号 + _idLabel = [[UILabel alloc] init]; + _idLabel.text = @"Homily ID | "; + _idLabel.textColor = [UIColor whiteColor]; + _idLabel.font = [UIFont systemFontOfSize:16]; + _idLabel.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_idLabel]; + + // 密码 + _pwdLabel = [[UILabel alloc] init]; + _pwdLabel.text = @"密码 | "; + _pwdLabel.textColor = [UIColor whiteColor]; + _pwdLabel.font = [UIFont systemFontOfSize:16]; + _pwdLabel.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_pwdLabel]; + + // 账号输入 + _account = [[UITextField alloc] init]; + NSDictionary *placeholder = @{ + NSForegroundColorAttributeName: [UIColor whiteColor], + NSFontAttributeName: _account.font + }; + _account.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@" 请输入帐号" attributes:placeholder]; + _account.textColor = [UIColor whiteColor]; + _account.layer.borderWidth = 0; + _account.layer.cornerRadius = 5; + _account.delegate = self; + _account.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_account]; + + // 密码输入 + _pwd = [[UITextField alloc] init]; + NSDictionary *placeholderAttrs1 = @{ + NSForegroundColorAttributeName: [UIColor whiteColor], + NSFontAttributeName: _pwd.font + }; + _pwd.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@" 请输入密码" attributes:placeholderAttrs1]; + _pwd.secureTextEntry = YES; + _pwd.textColor = [UIColor whiteColor]; + _pwd.layer.borderWidth = 0; + _pwd.layer.cornerRadius = 5; + _pwd.delegate = self; + _pwd.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_pwd]; + + // 登录 + _loginButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_loginButton setTitle:@"登录" forState:UIControlStateNormal]; + [_loginButton setTitle:@"这是一个高亮" forState:UIControlStateHighlighted]; + [_loginButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [_loginButton setTitleColor:[UIColor yellowColor] forState:UIControlStateHighlighted]; + _loginButton.backgroundColor = [UIColor blueColor]; + _loginButton.layer.cornerRadius = 25;// 圆角是高度一半就是圆形按钮 + _loginButton.translatesAutoresizingMaskIntoConstraints = NO; + [_loginButton addTarget:self + action:@selector(handleLogin) + forControlEvents:UIControlEventTouchUpInside]; + [self.view addSubview:_loginButton]; + + // 协议勾选 + _agreementButton = [UIButton buttonWithType:UIButtonTypeCustom]; + _agreementButton.layer.borderColor = [UIColor whiteColor].CGColor; + _agreementButton.layer.borderWidth = 1; + _agreementButton.layer.cornerRadius = 3; + _agreementButton.translatesAutoresizingMaskIntoConstraints = NO; + [_agreementButton addTarget:self + action:@selector(agreementButtonSelect:) + forControlEvents:UIControlEventTouchUpInside]; + [self.view addSubview:_agreementButton]; + + // 协议 + _agreementLabel = [[UILabel alloc] init]; + _agreementLabel.text = @"我已阅读且同意《注册协议》和《隐私政策》"; + _agreementLabel.textColor = [UIColor whiteColor]; + _agreementLabel.font = [UIFont systemFontOfSize:12]; + _agreementLabel.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_agreementLabel]; + + // 忘记密码? + _loseLabel = [[UILabel alloc] init]; + _loseLabel.text = @"忘记密码?"; + _loseLabel.textColor = [UIColor blueColor]; + _loseLabel.font = [UIFont systemFontOfSize:14]; + _loseLabel.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_loseLabel]; + + // 登录遇到问题? + _questionLabel = [[UILabel alloc] init]; + _questionLabel.text = @"登录遇到问题?"; + _questionLabel.textColor = [UIColor whiteColor]; + _questionLabel.font = [UIFont systemFontOfSize:14]; + _questionLabel.translatesAutoresizingMaskIntoConstraints = NO; + [self.view addSubview:_questionLabel]; + + // 邮箱登录 + _emailButton = [UIButton buttonWithConfiguration:[self createEmailButtonConfig] primaryAction:nil]; + _emailButton.translatesAutoresizingMaskIntoConstraints = NO;// 禁用自动布局!!!! + [self.view addSubview:_emailButton]; + + // logo的image + _logoImage = [[UIImageView alloc] init]; + _logoImage.image = [UIImage imageNamed:@"logo"]; + _logoImage.contentMode = UIViewContentModeScaleAspectFit; + _logoImage.translatesAutoresizingMaskIntoConstraints = NO;// 禁用自动布局!!!! + [self.view addSubview:_logoImage]; + + [self.view bringSubviewToFront:_account]; + [self.view bringSubviewToFront:_pwd]; } +#pragma mark - 协议选中 +- (void) agreementButtonSelect:(UIButton *) button { + button.selected = !button.selected; + + if (button.selected) { + [button setImage:[UIImage systemImageNamed:@"checkmark"] forState:UIControlStateNormal]; + button.tintColor = [UIColor whiteColor]; + button.backgroundColor = [UIColor blueColor]; + } else { + [button setImage:nil forState:UIControlStateNormal]; + button.backgroundColor = [UIColor clearColor]; + } +} +#pragma mark - 弹窗提示 +// 弹窗 +- (void) showAlertWithMessage:(NSString *)message { + UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" + message:message + preferredStyle:UIAlertControllerStyleAlert]; + [alert addAction:[UIAlertAction actionWithTitle:@"确定" + style:UIAlertActionStyleDefault + handler:nil]]; + [self presentViewController:alert animated:YES completion:nil]; +} + +- (void) handleLogin { +// NSString *account = _account.text; +// if (account.length == 0 || ![account isEqualToString:@"90047681"]) { +// [self showAlertWithMessage:@"请输入正确的账号"]; +// return; +// } +// +// NSString *pwdText = _pwd.text; +// if (pwdText.length == 0 || ![pwdText isEqualToString:@"123456"]) { +// [self showAlertWithMessage:@"请输入正确的密码"]; +// return; +// } +// +// if (!_agreementButton.selected) { +// [self showAlertWithMessage:@"请勾选协议"]; +// return; +// } + + HomeViewController *homeViewController = [[HomeViewController alloc] init]; + [self.navigationController pushViewController:homeViewController animated:YES]; +} + +#pragma mark - 约束 +- (void) setupConstraints { + [NSLayoutConstraint activateConstraints:@[ + // logo + [_logoImage.bottomAnchor constraintEqualToAnchor:_headLabel.topAnchor constant:-30], + [_logoImage.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor constant:40], + [_logoImage.widthAnchor constraintEqualToConstant:50], + [_logoImage.heightAnchor constraintEqualToConstant:50], + + // 标题 顶210,左40,宽200,高20 + [_headLabel.topAnchor constraintEqualToAnchor:self.view.topAnchor constant:210], + [_headLabel.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor constant:40], + [_headLabel.widthAnchor constraintEqualToConstant:200], + [_headLabel.heightAnchor constraintEqualToConstant:20], + + // ID 顶310,左40,宽200,高20 + [_idLabel.topAnchor constraintEqualToAnchor:self.view.topAnchor constant:310], + [_idLabel.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor constant:40], + [_idLabel.widthAnchor constraintEqualToConstant:200], + [_idLabel.heightAnchor constraintEqualToConstant:20], + + // 密码 ID下60,左40,宽200,高20 + [_pwdLabel.topAnchor constraintEqualToAnchor:_idLabel.topAnchor constant:60], + [_pwdLabel.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor constant:40], + [_account.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor constant:-40], + [_pwdLabel.heightAnchor constraintEqualToConstant:20], + + // 账号输入框:ID上10,左120,宽200,高40 + [_account.topAnchor constraintEqualToAnchor:_idLabel.topAnchor constant:-10], + [_account.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor constant:120], + [_pwd.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor constant:-40], + [_account.heightAnchor constraintEqualToConstant:40], + + // 密码输入框:密码上10,左120,宽200,高40 + [_pwd.topAnchor constraintEqualToAnchor:_pwdLabel.topAnchor constant:-10], + [_pwd.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor constant:120], + [_pwd.widthAnchor constraintEqualToConstant:200], + [_pwd.heightAnchor constraintEqualToConstant:40], + + // 登录按钮:密码框下80,左右40,高50 + [_loginButton.topAnchor constraintEqualToAnchor:_pwd.bottomAnchor constant:60], + [_loginButton.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor constant:40], + [_loginButton.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor constant:-40], + [_loginButton.heightAnchor constraintEqualToConstant:50], + + // 协议按钮:登录下70,左40,宽高20 + [_agreementButton.topAnchor constraintEqualToAnchor:_loginButton.bottomAnchor constant:30], + [_agreementButton.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor constant:40], + [_agreementButton.widthAnchor constraintEqualToConstant:20], + [_agreementButton.heightAnchor constraintEqualToConstant:20], + + // 协议:同协议按钮顶,左70,右40 + [_agreementLabel.topAnchor constraintEqualToAnchor:_agreementButton.topAnchor], + [_agreementLabel.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor constant:70], + [_agreementLabel.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor constant:-40], + [_agreementLabel.heightAnchor constraintEqualToConstant:20], + + // 忘记密码:协议按钮下65,水平居中,高20 + [_loseLabel.topAnchor constraintEqualToAnchor:_agreementButton.bottomAnchor constant:65], + [_loseLabel.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor], + [_loseLabel.heightAnchor constraintEqualToConstant:20], + + // 登录问题:忘记密码下45,水平居中,高20 + [_questionLabel.topAnchor constraintEqualToAnchor:_loseLabel.bottomAnchor constant:15], + [_questionLabel.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor], + [_questionLabel.heightAnchor constraintEqualToConstant:20], + + // 邮箱登录 + [_emailButton.topAnchor constraintEqualToAnchor:_loseLabel.bottomAnchor constant:55], + [_emailButton.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor], + [_emailButton.widthAnchor constraintEqualToConstant:100], + [_emailButton.heightAnchor constraintEqualToConstant:100], + ]]; +} +// 单写一个 +- (UIButtonConfiguration *) createEmailButtonConfig { + UIButtonConfiguration *config = [UIButtonConfiguration plainButtonConfiguration]; + config.title = @"邮箱登录"; + config.image = [UIImage imageNamed:@"email"]; + config.imagePlacement = NSDirectionalRectEdgeTop;// 这里也不对???? + config.imagePadding = 8; + + return config; +} +#pragma mark - UITextFieldDelegate +- (BOOL) textFieldShouldReturn:(UITextField *)textField { + [textField resignFirstResponder];// 点击return键收起键盘 + return YES; +} + +- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + [self.view endEditing:YES];// 点空白也收起键盘 +} @end