// // MLXYViewController.m // HC // // Created by huilinLi on 2025/11/26. // #import "MLXYViewController.h" #import "ChartViewController.h" #pragma mark - cell们 static NSString *const stockCell = @"StockCell";// 股票cell static NSString *const permCell = @"PermCell";// 接口cell @interface MLXYViewController () #pragma mark - Config @property (nonatomic, strong) UIButtonConfiguration *buttonConfig; @property (nonatomic, strong) NSArray *sectorDataConfig; @property (nonatomic, strong) NSMutableArray *permissionDataList; #pragma mark - 滚动相关 @property (nonatomic, strong) UIScrollView *globalScrollView; @property (nonatomic, strong) UIView *scrollContentView; @property (nonatomic, strong) UIButton *mlxyButton; #pragma mark - 大盘 @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; #pragma mark - 板块 @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; #pragma mark - 股票容器 @property (nonatomic, strong) UIView *stockContainer; @property (nonatomic, strong) UIView *stockHeaderView; @property (nonatomic, strong) UITableView *stockTableView; #pragma mark - 接口容器 @property (nonatomic, strong) UIView *stockContainer1; @property (nonatomic, strong) UILabel *stockLabel1; @property (nonatomic, strong) UIView *permissionHeaderView; @property (nonatomic, strong) UITableView *permissionTableView; @end @implementation MLXYViewController #pragma mark - viewDidLoad - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor blackColor]; [self setupData]; [self setupGlobalScrollView]; [self setupSubviews]; [self marketViewClick]; [self setupConstraints]; [self fetchPermissionData]; } #pragma mark - 数据 - (void)setupData { _permissionDataList = [NSMutableArray array]; _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%"} ]; UIButtonConfiguration *config = [UIButtonConfiguration plainButtonConfiguration]; config.title = @"更多"; config.attributedTitle = [[NSAttributedString alloc] initWithString:@"更多" attributes:@{ NSFontAttributeName: [UIFont systemFontOfSize:14], NSForegroundColorAttributeName: [UIColor lightGrayColor]// 文字颜色 }]; config.image = [UIImage systemImageNamed:@"chevron.right"]; config.imagePlacement = NSDirectionalRectEdgeTrailing; config.imagePadding = 1; config.baseForegroundColor = [UIColor lightGrayColor];// 按钮文字和模板都会继承这个颜色 _buttonConfig = config; } #pragma mark - 发请求 - (void)fetchPermissionData { NSString *urlString = @"https://hwjb.homilychart.com/dev/admin/permission/getPermission"; NSURL *url = [NSURL URLWithString:urlString]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; request.HTTPMethod = @"POST"; [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; NSString *token = @"eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiIwMTQ0ZDE4MWQ3NDI0ZjljYjk1OTI0Y2RiZWQzZTlmYSIsInN1YiI6IntcImlkXCI6MTAwMDAxMyxcImFkbWluTmFtZVwiOlwi5p2O5oWn55Cz5ryU56S65py6XCIsXCJhY2NvdW50XCI6XCI5MDA0NzY4MVwiLFwicGFzc3dvcmRcIjpcIiQyYSQxMCRzSXVXMFNSMllEZFIyMGxxZnVRRXBlbDdHU2NTVmRqb1lDaXNrSmpTU0suNE5hbmN5NkUyLlwiLFwibWFjaGluZUlkXCI6XCIyMDAzMDQwMSxGQzM2RDYzOEZGM0FcIixcIm1hY2hpbmVJZHNcIjpudWxsLFwiYWRtaW5TdGF0dXNcIjoxLFwibWFya2V0XCI6bnVsbCxcIm1hcmtldHNcIjpcIuaAu-mDqFwiLFwicm9sZUtleVwiOm51bGwsXCJwb3N0aXRvblwiOlwi56CU5Y-RXCIsXCJyZW1hcmtcIjpcIuWRmOW3pVwiLFwiY3JlYXRlVGltZVwiOlwiMjAyNS0wOC0xMCAxNDozNDowOVwiLFwidXBkYXRlVGltZVwiOlwiMjAyNS0xMS0yMSAxNzo1NDo0MVwiLFwicm9sZUlkXCI6MixcInVzZXJuYW1lXCI6XCI5MDA0NzY4MVwifSIsImlzcyI6InNnIiwiaWF0IjoxNzY0OTE1NzQ5LCJleHAiOjE3NjUwMDIxNDl9.5O__C0lpO3CBHMVPOjiUsLD1Cp733aBZCcDmpkfcXSc"; [request setValue:token forHTTPHeaderField:@"token"]; NSDictionary *params = @{ @"pageNum": @1, @"pageSize": @10, @"permission": @{ @"account": @"", @"market": @"", @"postiton": @"" } }; // 参数转json NSError *error; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:params options:0 error:&error]; if (!error) {request.HTTPBody = jsonData; }else{ NSLog(@"参数转json失败:%@",error); return; } NSURLSessionDataTask *task = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { if (error) { NSLog(@"请求失败: %@", error); return; } if (data) { NSError *jsonError; NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError]; if (!jsonError && [json[@"code"] integerValue] == 200) { NSArray *list = json[@"data"][@"list"]; [self.permissionDataList removeAllObjects]; [self.permissionDataList addObjectsFromArray:list]; dispatch_async(dispatch_get_main_queue(), ^{ [self.permissionTableView reloadData]; }); } } }]; [task resume]; } #pragma mark - 子视图们 - (void)setupGlobalScrollView { _globalScrollView = [[UIScrollView alloc] init]; _globalScrollView.backgroundColor = [UIColor blackColor]; _globalScrollView.showsVerticalScrollIndicator = YES; _globalScrollView.translatesAutoresizingMaskIntoConstraints = NO; [self.view addSubview:_globalScrollView]; _scrollContentView = [[UIView alloc] init]; _scrollContentView.backgroundColor = [UIColor blackColor]; _scrollContentView.translatesAutoresizingMaskIntoConstraints = NO; [_globalScrollView addSubview:_scrollContentView]; } - (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; [_scrollContentView addSubview:_mlxyButton]; // 大盘 [self setupMarketUI]; // 板块 [self setupSectorUI]; // 股票 [self setupStockListUI]; // 接口 [self setupPermissionUI]; } - (void)setupMarketUI { _marketTitleLabel = [self createTitleLabel:@"大盘指数"]; [_scrollContentView addSubview:_marketTitleLabel]; _marketView = [[UIView alloc] init]; _marketView.backgroundColor = [UIColor greenColor]; _marketView.layer.cornerRadius = 8; _marketView.translatesAutoresizingMaskIntoConstraints = NO; [_scrollContentView addSubview:_marketView]; _marketLine1 = [self createMarketLabel:@"富时马来西亚KLCI" fontSize:12 isBold:YES]; _marketLine2 = [self createMarketLabel:@"1624.500" fontSize:17 isBold:YES]; _marketLine3 = [self createMarketLabel:@"12.760 0.792%" fontSize:12 isBold:YES]; [_marketView addSubview:_marketLine1]; [_marketView addSubview:_marketLine2]; [_marketView addSubview:_marketLine3]; } - (void)setupSectorUI { _sectorTitleLabel = [self createTitleLabel:@"板块"]; [_scrollContentView addSubview:_sectorTitleLabel]; _sectorBtn = [UIButton buttonWithConfiguration:self.buttonConfig primaryAction:nil]; _sectorBtn.translatesAutoresizingMaskIntoConstraints = NO; [_scrollContentView addSubview:_sectorBtn]; _sectorCard1 = [self createSectorCardWithData:self.sectorDataConfig[0]]; _sectorCard2 = [self createSectorCardWithData:self.sectorDataConfig[1]]; _sectorCard3 = [self createSectorCardWithData:self.sectorDataConfig[2]]; [_scrollContentView addSubview:_sectorCard1]; [_scrollContentView addSubview:_sectorCard2]; [_scrollContentView addSubview:_sectorCard3]; } - (void)setupStockListUI { _stockContainer = [[UIView alloc] init]; _stockContainer.translatesAutoresizingMaskIntoConstraints = NO; [_scrollContentView addSubview:_stockContainer]; UILabel *title = [self createTitleLabel:@"股票"]; [_stockContainer addSubview:title]; UIButton *btn = [UIButton buttonWithConfiguration:self.buttonConfig primaryAction:nil]; btn.translatesAutoresizingMaskIntoConstraints = NO; [_stockContainer addSubview:btn]; _stockHeaderView = [[UIView alloc] init]; _stockHeaderView.backgroundColor = [UIColor blackColor]; _stockHeaderView.translatesAutoresizingMaskIntoConstraints = NO; [_stockContainer addSubview:_stockHeaderView]; [self setupHeaderLabelsForView:_stockHeaderView titles:@[@"名称", @"最新", @"涨幅"] isWhite:NO]; _stockTableView = [[UITableView alloc] init]; _stockTableView.backgroundColor = [UIColor blackColor]; _stockTableView.separatorStyle = UITableViewCellSeparatorStyleNone; _stockTableView.delegate = self; _stockTableView.dataSource = self; _stockTableView.scrollEnabled = NO; [_stockTableView registerClass:[UITableViewCell class] forCellReuseIdentifier:stockCell]; _stockTableView.translatesAutoresizingMaskIntoConstraints = NO; [_stockContainer addSubview:_stockTableView]; } - (void)setupPermissionUI { _stockContainer1 = [[UIView alloc] init]; _stockContainer1.backgroundColor = [UIColor whiteColor]; _stockContainer1.layer.cornerRadius = 8; _stockContainer1.translatesAutoresizingMaskIntoConstraints = NO; [_scrollContentView addSubview:_stockContainer1]; _stockLabel1 = [[UILabel alloc] init]; _stockLabel1.text = @"真数据!"; _stockLabel1.textColor = [UIColor blackColor]; _stockLabel1.font = [UIFont systemFontOfSize:16 weight:UIFontWeightBold]; _stockLabel1.translatesAutoresizingMaskIntoConstraints = NO; [_stockContainer1 addSubview:_stockLabel1]; _permissionHeaderView = [[UIView alloc] init]; _permissionHeaderView.backgroundColor = [UIColor colorWithWhite:0.95 alpha:1.0]; _permissionHeaderView.translatesAutoresizingMaskIntoConstraints = NO; [_stockContainer1 addSubview:_permissionHeaderView]; [self setupHeaderLabelsForView:_permissionHeaderView titles:@[@"Name", @"Account", @"Market", @"Position"] isWhite:YES]; _permissionTableView = [[UITableView alloc] init]; _permissionTableView.backgroundColor = [UIColor whiteColor]; _permissionTableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine; _permissionTableView.delegate = self; _permissionTableView.dataSource = self; _permissionTableView.scrollEnabled = NO; [_permissionTableView registerClass:[UITableViewCell class] forCellReuseIdentifier:permCell]; _permissionTableView.translatesAutoresizingMaskIntoConstraints = NO; [_stockContainer1 addSubview:_permissionTableView]; } #pragma mark - 小工具 - (UILabel *)createTitleLabel:(NSString *)text { UILabel *label = [[UILabel alloc] init]; label.text = text; label.textColor = [UIColor whiteColor]; label.font = [UIFont systemFontOfSize:16 weight:UIFontWeightMedium]; label.translatesAutoresizingMaskIntoConstraints = NO; return label; } - (UILabel *)createMarketLabel:(NSString *)text fontSize:(CGFloat)size isBold:(BOOL)isBold { UILabel *label = [[UILabel alloc] init]; label.text = text; label.textColor = [UIColor whiteColor]; label.font = isBold ? [UIFont boldSystemFontOfSize:size] : [UIFont systemFontOfSize:size]; label.textAlignment = NSTextAlignmentCenter; label.translatesAutoresizingMaskIntoConstraints = NO; return label; } - (void)setupHeaderLabelsForView:(UIView *)view titles:(NSArray *)titles isWhite:(BOOL)isWhite { CGFloat multiplier = 1.0 / titles.count; for (NSInteger i = 0; i < titles.count; i++) { UILabel *label = [[UILabel alloc] init]; label.text = titles[i]; label.textColor = isWhite ? [UIColor darkGrayColor] : [UIColor lightGrayColor]; label.font = isWhite ? [UIFont boldSystemFontOfSize:12] : [UIFont systemFontOfSize:12]; label.translatesAutoresizingMaskIntoConstraints = NO; [view addSubview:label]; if (isWhite) { // 等分 label.textAlignment = NSTextAlignmentCenter; [NSLayoutConstraint activateConstraints:@[ [label.topAnchor constraintEqualToAnchor:view.topAnchor], [label.bottomAnchor constraintEqualToAnchor:view.bottomAnchor], [label.widthAnchor constraintEqualToAnchor:view.widthAnchor multiplier:multiplier], (i == 0) ? [label.leadingAnchor constraintEqualToAnchor:view.leadingAnchor] : [label.leadingAnchor constraintEqualToAnchor:view.subviews[i-1].trailingAnchor] ]]; } else { // 股票表头 label.textAlignment = (i == 0) ? NSTextAlignmentLeft : NSTextAlignmentRight; [label.centerYAnchor constraintEqualToAnchor:view.centerYAnchor].active = YES; if (i == 0) { [label.leadingAnchor constraintEqualToAnchor:view.leadingAnchor constant:15].active = YES; } else if (i == 1) { [label.widthAnchor constraintEqualToConstant:60].active = YES; [label.trailingAnchor constraintEqualToAnchor:view.trailingAnchor constant:-110].active = YES; } else { [label.widthAnchor constraintEqualToConstant:80].active = YES; [label.trailingAnchor constraintEqualToAnchor:view.trailingAnchor constant:-30].active = YES; } } } } - (UIView *)createSectorCardWithData:(NSDictionary *)data { UIView *card = [[UIView alloc] init]; card.backgroundColor = [UIColor darkGrayColor]; card.layer.cornerRadius = 8; card.translatesAutoresizingMaskIntoConstraints = NO; UILabel *nameLabel = [self createCardLabel:data[@"name"] color:[UIColor whiteColor] size:14 bold:NO]; UILabel *val1Label = [self createCardLabel:data[@"value1"] color:[UIColor greenColor] size:16 bold:YES]; UILabel *val2Label = [self createCardLabel:data[@"value2"] color:[UIColor greenColor] size:12 bold:NO]; UILabel *val3Label = [self createCardLabel:data[@"value3"] color:[UIColor greenColor] size:12 bold:NO]; [card addSubview:nameLabel]; [card addSubview:val1Label]; [card addSubview:val2Label]; [card addSubview:val3Label]; [NSLayoutConstraint activateConstraints:@[ [nameLabel.topAnchor constraintEqualToAnchor:card.topAnchor constant:7], [nameLabel.leadingAnchor constraintEqualToAnchor:card.leadingAnchor constant:10], [val1Label.topAnchor constraintEqualToAnchor:nameLabel.bottomAnchor constant:10], [val1Label.leadingAnchor constraintEqualToAnchor:card.leadingAnchor constant:10], [val2Label.topAnchor constraintEqualToAnchor:val1Label.bottomAnchor constant:7], [val2Label.leadingAnchor constraintEqualToAnchor:card.leadingAnchor constant:10], [val3Label.topAnchor constraintEqualToAnchor:val2Label.bottomAnchor constant:6], [val3Label.leadingAnchor constraintEqualToAnchor:card.leadingAnchor constant:10] ]]; return card; } - (UILabel *)createCardLabel:(NSString *)text color:(UIColor *)color size:(CGFloat)size bold:(BOOL)bold { UILabel *label = [[UILabel alloc] init]; label.text = text; label.textColor = color; label.font = bold ? [UIFont boldSystemFontOfSize:size] : [UIFont systemFontOfSize:size]; label.translatesAutoresizingMaskIntoConstraints = NO; return label; } #pragma mark - 约束们 - (void)setupConstraints { [NSLayoutConstraint activateConstraints:@[ [_globalScrollView.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor], [_globalScrollView.trailingAnchor constraintEqualToAnchor:self.view.trailingAnchor], [_globalScrollView.topAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.topAnchor], [_globalScrollView.bottomAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.bottomAnchor], [_scrollContentView.leadingAnchor constraintEqualToAnchor:_globalScrollView.leadingAnchor], [_scrollContentView.trailingAnchor constraintEqualToAnchor:_globalScrollView.trailingAnchor], [_scrollContentView.topAnchor constraintEqualToAnchor:_globalScrollView.topAnchor], [_scrollContentView.bottomAnchor constraintEqualToAnchor:_globalScrollView.bottomAnchor], [_scrollContentView.widthAnchor constraintEqualToAnchor:self.view.widthAnchor] ]]; [NSLayoutConstraint activateConstraints:@[ [_mlxyButton.topAnchor constraintEqualToAnchor:_scrollContentView.topAnchor constant:15], [_mlxyButton.leadingAnchor constraintEqualToAnchor:_scrollContentView.leadingAnchor constant:15], [_mlxyButton.widthAnchor constraintEqualToConstant:90], [_mlxyButton.heightAnchor constraintEqualToConstant:30] ]]; [NSLayoutConstraint activateConstraints:@[ [_marketTitleLabel.topAnchor constraintEqualToAnchor:_mlxyButton.bottomAnchor constant:10], [_marketTitleLabel.leadingAnchor constraintEqualToAnchor:_scrollContentView.leadingAnchor constant:15], [_marketView.topAnchor constraintEqualToAnchor:_marketTitleLabel.bottomAnchor constant:10], [_marketView.leadingAnchor constraintEqualToAnchor:_scrollContentView.leadingAnchor constant:15], [_marketView.widthAnchor constraintEqualToAnchor:_scrollContentView.widthAnchor multiplier:0.3], [_marketView.heightAnchor constraintEqualToConstant:100], [_marketLine1.topAnchor constraintEqualToAnchor:_marketView.topAnchor constant:10], [_marketLine1.centerXAnchor constraintEqualToAnchor:_marketView.centerXAnchor], [_marketLine2.topAnchor constraintEqualToAnchor:_marketLine1.bottomAnchor constant:15], [_marketLine2.centerXAnchor constraintEqualToAnchor:_marketView.centerXAnchor], [_marketLine3.topAnchor constraintEqualToAnchor:_marketLine2.bottomAnchor constant:12], [_marketLine3.centerXAnchor constraintEqualToAnchor:_marketView.centerXAnchor] ]]; [NSLayoutConstraint activateConstraints:@[ [_sectorTitleLabel.topAnchor constraintEqualToAnchor:_marketView.bottomAnchor constant:20], [_sectorTitleLabel.leadingAnchor constraintEqualToAnchor:_scrollContentView.leadingAnchor constant:15], [_sectorBtn.centerYAnchor constraintEqualToAnchor:_sectorTitleLabel.centerYAnchor], [_sectorBtn.trailingAnchor constraintEqualToAnchor:_scrollContentView.trailingAnchor constant:-15], [_sectorCard1.topAnchor constraintEqualToAnchor:_sectorTitleLabel.bottomAnchor constant:10], [_sectorCard1.leadingAnchor constraintEqualToAnchor:_scrollContentView.leadingAnchor constant:8], [_sectorCard1.widthAnchor constraintEqualToAnchor:_scrollContentView.widthAnchor multiplier:0.3], [_sectorCard1.heightAnchor constraintEqualToConstant:100], [_sectorCard2.topAnchor constraintEqualToAnchor:_sectorCard1.topAnchor], [_sectorCard2.leadingAnchor constraintEqualToAnchor:_sectorCard1.trailingAnchor constant:8], [_sectorCard2.widthAnchor constraintEqualToAnchor:_sectorCard1.widthAnchor], [_sectorCard2.heightAnchor constraintEqualToAnchor:_sectorCard1.heightAnchor], [_sectorCard3.topAnchor constraintEqualToAnchor:_sectorCard1.topAnchor], [_sectorCard3.leadingAnchor constraintEqualToAnchor:_sectorCard2.trailingAnchor constant:8], [_sectorCard3.trailingAnchor constraintEqualToAnchor:_scrollContentView.trailingAnchor constant:-16], [_sectorCard3.heightAnchor constraintEqualToAnchor:_sectorCard1.heightAnchor] ]]; UILabel *stockTitle = _stockContainer.subviews[0]; UIButton *stockBtn = _stockContainer.subviews[1]; [NSLayoutConstraint activateConstraints:@[ [_stockContainer.topAnchor constraintEqualToAnchor:_sectorCard1.bottomAnchor constant:20], [_stockContainer.leadingAnchor constraintEqualToAnchor:_scrollContentView.leadingAnchor], [_stockContainer.trailingAnchor constraintEqualToAnchor:_scrollContentView.trailingAnchor], [_stockContainer.bottomAnchor constraintEqualToAnchor:_stockTableView.bottomAnchor constant:10], [stockTitle.topAnchor constraintEqualToAnchor:_stockContainer.topAnchor constant:15], [stockTitle.leadingAnchor constraintEqualToAnchor:_stockContainer.leadingAnchor constant:15], [stockBtn.centerYAnchor constraintEqualToAnchor:stockTitle.centerYAnchor], [stockBtn.trailingAnchor constraintEqualToAnchor:_stockContainer.trailingAnchor constant:-15], [_stockHeaderView.topAnchor constraintEqualToAnchor:stockTitle.bottomAnchor constant:10], [_stockHeaderView.leadingAnchor constraintEqualToAnchor:_stockContainer.leadingAnchor], [_stockHeaderView.trailingAnchor constraintEqualToAnchor:_stockContainer.trailingAnchor], [_stockHeaderView.heightAnchor constraintEqualToConstant:30], [_stockTableView.topAnchor constraintEqualToAnchor:_stockHeaderView.bottomAnchor], [_stockTableView.leadingAnchor constraintEqualToAnchor:_stockContainer.leadingAnchor], [_stockTableView.trailingAnchor constraintEqualToAnchor:_stockContainer.trailingAnchor], [_stockTableView.heightAnchor constraintEqualToConstant:240] ]]; [NSLayoutConstraint activateConstraints:@[ [_stockContainer1.topAnchor constraintEqualToAnchor:_stockContainer.bottomAnchor constant:20], [_stockContainer1.leadingAnchor constraintEqualToAnchor:_scrollContentView.leadingAnchor constant:15], [_stockContainer1.trailingAnchor constraintEqualToAnchor:_scrollContentView.trailingAnchor constant:-15], [_stockContainer1.heightAnchor constraintEqualToConstant:290], // Height approximation [_stockContainer1.bottomAnchor constraintEqualToAnchor:_scrollContentView.bottomAnchor constant:-20], [_stockLabel1.topAnchor constraintEqualToAnchor:_stockContainer1.topAnchor constant:10], [_stockLabel1.leadingAnchor constraintEqualToAnchor:_stockContainer1.leadingAnchor constant:15], [_permissionHeaderView.topAnchor constraintEqualToAnchor:_stockLabel1.bottomAnchor constant:10], [_permissionHeaderView.leadingAnchor constraintEqualToAnchor:_stockContainer1.leadingAnchor], [_permissionHeaderView.trailingAnchor constraintEqualToAnchor:_stockContainer1.trailingAnchor], [_permissionHeaderView.heightAnchor constraintEqualToConstant:30], [_permissionTableView.topAnchor constraintEqualToAnchor:_permissionHeaderView.bottomAnchor], [_permissionTableView.leadingAnchor constraintEqualToAnchor:_stockContainer1.leadingAnchor], [_permissionTableView.trailingAnchor constraintEqualToAnchor:_stockContainer1.trailingAnchor], [_permissionTableView.bottomAnchor constraintEqualToAnchor:_stockContainer1.bottomAnchor constant:-5] ]]; } #pragma mark - 跳转k线 -(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]; } #pragma mark - 哦哦哦哦哦 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if (tableView == _stockTableView) return 4;// 股票表4行 if (tableView == _permissionTableView) return MIN(self.permissionDataList.count, 5);// 接口最多5行 return 0; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return (tableView == _stockTableView) ? 60 : 44;// 行高 } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { if (tableView == _stockTableView) { return [self stockCellForIndexPath:indexPath]; } else { return [self permissionCellForIndexPath:indexPath]; } } // 股票Cell - (UITableViewCell *)stockCellForIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [_stockTableView 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 *data = stocks[indexPath.row]; UILabel *name = [self createCardLabel:data[@"name"] color:[UIColor whiteColor] size:14 bold:NO]; name.lineBreakMode = NSLineBreakByTruncatingTail; UILabel *code = [self createCardLabel:data[@"code"] color:[UIColor lightGrayColor] size:12 bold:NO]; UILabel *price = [self createCardLabel:data[@"price"] color:[UIColor greenColor] size:14 bold:NO]; price.textAlignment = NSTextAlignmentRight; UILabel *val2 = [self createCardLabel:data[@"value2"] color:[UIColor greenColor] size:14 bold:NO]; val2.textAlignment = NSTextAlignmentRight; [cell.contentView addSubview:name]; [cell.contentView addSubview:code]; [cell.contentView addSubview:price]; [cell.contentView addSubview:val2]; [NSLayoutConstraint activateConstraints:@[ [name.leadingAnchor constraintEqualToAnchor:cell.contentView.leadingAnchor constant:15], [name.topAnchor constraintEqualToAnchor:cell.contentView.topAnchor constant:10], [name.trailingAnchor constraintLessThanOrEqualToAnchor:price.leadingAnchor constant:-10], [code.leadingAnchor constraintEqualToAnchor:cell.contentView.leadingAnchor constant:15], [code.topAnchor constraintEqualToAnchor:name.bottomAnchor constant:5], [price.widthAnchor constraintEqualToConstant:60], [price.trailingAnchor constraintEqualToAnchor:val2.leadingAnchor constant:-10], [price.centerYAnchor constraintEqualToAnchor:cell.contentView.centerYAnchor], [val2.widthAnchor constraintEqualToConstant:80], [val2.trailingAnchor constraintEqualToAnchor:cell.contentView.trailingAnchor constant:-15], [val2.centerYAnchor constraintEqualToAnchor:cell.contentView.centerYAnchor] ]]; return cell; } // 接口Cell - (UITableViewCell *)permissionCellForIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [_permissionTableView dequeueReusableCellWithIdentifier:permCell forIndexPath:indexPath]; cell.backgroundColor = [UIColor whiteColor]; cell.selectionStyle = UITableViewCellSelectionStyleNone; [cell.contentView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; NSDictionary *item = self.permissionDataList[indexPath.row]; NSArray *values = @[item[@"name"] ?: @"-", item[@"account"] ?: @"-", item[@"market"] ?: @"-", item[@"postiton"] ?: @"-"]; for (NSInteger i = 0; i < values.count; i++) { UILabel *label = [self createCardLabel:[NSString stringWithFormat:@"%@", values[i]] color:[UIColor blackColor] size:11 bold:NO]; label.textAlignment = NSTextAlignmentCenter; label.lineBreakMode = NSLineBreakByTruncatingTail; [cell.contentView addSubview:label]; [NSLayoutConstraint activateConstraints:@[ [label.topAnchor constraintEqualToAnchor:cell.contentView.topAnchor], [label.bottomAnchor constraintEqualToAnchor:cell.contentView.bottomAnchor], [label.widthAnchor constraintEqualToAnchor:cell.contentView.widthAnchor multiplier:0.25], (i == 0) ? [label.leadingAnchor constraintEqualToAnchor:cell.contentView.leadingAnchor] : [label.leadingAnchor constraintEqualToAnchor:cell.contentView.subviews[i-1].trailingAnchor] ]]; } return cell; } @end