// // CandleStickChartViewController.m // ChartsDemo // // Copyright 2015 Daniel Cohen Gindi & Philipp Jahoda // A port of MPAndroidChart for iOS // Licensed under Apache License 2.0 // // https://github.com/danielgindi/Charts // #import "CandleStickChartViewController.h" #import "ChartsDemo_iOS-Swift.h" @interface CandleStickChartViewController () @property (nonatomic, strong) IBOutlet CandleStickChartView *chartView; @property (nonatomic, strong) IBOutlet UISlider *sliderX; @property (nonatomic, strong) IBOutlet UISlider *sliderY; @property (nonatomic, strong) IBOutlet UITextField *sliderTextX; @property (nonatomic, strong) IBOutlet UITextField *sliderTextY; @end @implementation CandleStickChartViewController - (void)viewDidLoad { [super viewDidLoad]; self.title = @"Candle Stick Chart"; self.options = @[ @{@"key": @"toggleValues", @"label": @"Toggle Values"}, @{@"key": @"toggleIcons", @"label": @"Toggle Icons"}, @{@"key": @"toggleHighlight", @"label": @"Toggle Highlight"}, @{@"key": @"animateX", @"label": @"Animate X"}, @{@"key": @"animateY", @"label": @"Animate Y"}, @{@"key": @"animateXY", @"label": @"Animate XY"}, @{@"key": @"saveToGallery", @"label": @"Save to Camera Roll"}, @{@"key": @"togglePinchZoom", @"label": @"Toggle PinchZoom"}, @{@"key": @"toggleAutoScaleMinMax", @"label": @"Toggle auto scale min/max"}, @{@"key": @"toggleShadowColorSameAsCandle", @"label": @"Toggle shadow same color"}, @{@"key": @"toggleShowCandleBar", @"label": @"Toggle show candle bar"}, @{@"key": @"toggleData", @"label": @"Toggle Data"}, ]; _chartView.delegate = self; _chartView.chartDescription.enabled = NO; _chartView.maxVisibleCount = 60; _chartView.pinchZoomEnabled = NO; _chartView.drawGridBackgroundEnabled = NO; ChartXAxis *xAxis = _chartView.xAxis; xAxis.labelPosition = XAxisLabelPositionBottom; xAxis.drawGridLinesEnabled = NO; ChartYAxis *leftAxis = _chartView.leftAxis; leftAxis.labelCount = 7; leftAxis.drawGridLinesEnabled = NO; leftAxis.drawAxisLineEnabled = NO; ChartYAxis *rightAxis = _chartView.rightAxis; rightAxis.enabled = NO; _chartView.legend.enabled = NO; _sliderX.value = 40.0; _sliderY.value = 100.0; [self slidersValueChanged:nil]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (void)updateChartData { if (self.shouldHideData) { _chartView.data = nil; return; } [self setDataCount:_sliderX.value + 1 range:_sliderY.value]; } - (void)setDataCount:(int)count range:(double)range { NSMutableArray *yVals1 = [[NSMutableArray alloc] init]; for (int i = 0; i < count; i++) { double mult = (range + 1); double val = (double) (arc4random_uniform(40)) + mult; double high = (double) (arc4random_uniform(9)) + 8.0; double low = (double) (arc4random_uniform(9)) + 8.0; double open = (double) (arc4random_uniform(6)) + 1.0; double close = (double) (arc4random_uniform(6)) + 1.0; BOOL even = i % 2 == 0; [yVals1 addObject:[[CandleChartDataEntry alloc] initWithX:i shadowH:val + high shadowL:val - low open:even ? val + open : val - open close:even ? val - close : val + close icon: [UIImage imageNamed:@"icon"]]]; } CandleChartDataSet *set1 = [[CandleChartDataSet alloc] initWithEntries:yVals1 label:@"Data Set"]; set1.axisDependency = AxisDependencyLeft; [set1 setColor:[UIColor colorWithWhite:80/255.f alpha:1.f]]; set1.drawIconsEnabled = NO; set1.shadowColor = UIColor.darkGrayColor; set1.shadowWidth = 0.7; set1.decreasingColor = UIColor.redColor; set1.decreasingFilled = YES; set1.increasingColor = [UIColor colorWithRed:122/255.f green:242/255.f blue:84/255.f alpha:1.f]; set1.increasingFilled = NO; set1.neutralColor = UIColor.blueColor; CandleChartData *data = [[CandleChartData alloc] initWithDataSet:set1]; _chartView.data = data; } - (void)optionTapped:(NSString *)key { if ([key isEqualToString:@"toggleShadowColorSameAsCandle"]) { for (id set in _chartView.data.dataSets) { set.shadowColorSameAsCandle = !set.shadowColorSameAsCandle; } [_chartView notifyDataSetChanged]; return; } else if ([key isEqualToString:@"toggleShowCandleBar"]) { for (id set in _chartView.data.dataSets) { set.showCandleBar = !set.showCandleBar; } [_chartView notifyDataSetChanged]; return; } [super handleOption:key forChartView:_chartView]; } #pragma mark - Actions - (IBAction)slidersValueChanged:(id)sender { _sliderTextX.text = [@((int)_sliderX.value) stringValue]; _sliderTextY.text = [@((int)_sliderY.value) stringValue]; [self updateChartData]; } #pragma mark - ChartViewDelegate - (void)chartValueSelected:(ChartViewBase * __nonnull)chartView entry:(ChartDataEntry * __nonnull)entry highlight:(ChartHighlight * __nonnull)highlight { NSLog(@"chartValueSelected"); } - (void)chartValueNothingSelected:(ChartViewBase * __nonnull)chartView { NSLog(@"chartValueNothingSelected"); } @end