gpt4 book ai didi

iphone - 如何在iPhone中实现条形图?

转载 作者:行者123 更新时间:2023-12-03 18:31:30 24 4
gpt4 key购买 nike

我正在开发简单的条形图应用程序,使用Coreplot来开发这个应用程序,然后我尝试实现条形图,但我在

中发现了问题
  [__NSCFConstantString sizeWithTextStyle:]: unrecognized selector sent to instance 0x7fb4c'
First throw call stack:

如何解决这个问题?请帮助我

提前致谢

我尝试过:

Viewcontroller.h

#import <UIKit/UIKit.h>
#import "CorePlot-CocoaTouch.h"


@interface GraphViewController : UIViewController <CPTPlotDataSource>
{
CPTXYGraph *barChart;
NSTimer *timer;
NSMutableArray *samples;
}

-(void) getGraphValues;

@end

Viewcontroller.m

 - (void)viewDidLoad
{
[super viewDidLoad];

self.view.backgroundColor=[UIColor whiteColor];
self.title = @"Sample";
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
[self.navigationController setNavigationBarHidden:NO];

[self getGraphValues];

double xAxisLength = [samples count];

barChart = [[CPTXYGraph alloc] initWithFrame:CGRectMake(0, 0, 320, 380)];

barChart.plotAreaFrame.borderLineStyle = nil;
barChart.plotAreaFrame.cornerRadius = 0.0f;

barChart.paddingLeft = 0.0f;
barChart.paddingRight = 0.0f;
barChart.paddingTop = 0.0f;
barChart.paddingBottom = 0.0f;

barChart.plotAreaFrame.paddingLeft = 60.0;
barChart.plotAreaFrame.paddingTop = 40.0;
barChart.plotAreaFrame.paddingRight = 10.0;
barChart.plotAreaFrame.paddingBottom = 40.0;

barChart.title = @"Sample Innovations";

CPTMutableTextStyle *textStyle = [CPTTextStyle textStyle];
textStyle.color = [CPTColor grayColor];
textStyle.fontSize = 16.0f;
textStyle.textAlignment = CPTTextAlignmentCenter;
barChart.titleTextStyle = textStyle; // Error found here
barChart.titleDisplacement = CGPointMake(0.0f, -10.0f);
barChart.titlePlotAreaFrameAnchor = CPTRectAnchorTop;

CPTXYAxisSet *axisSet = (CPTXYAxisSet *)barChart.axisSet;
CPTXYAxis *x = axisSet.xAxis;
x.axisLineStyle = nil;
x.majorTickLineStyle = nil;
x.minorTickLineStyle = nil;
x.majorIntervalLength = CPTDecimalFromString(@"10");
x.orthogonalCoordinateDecimal = CPTDecimalFromString(@"0");
x.title = @"Names";
x.titleLocation = CPTDecimalFromFloat(7.5f);
x.titleOffset = 25.0f;

// Define some custom labels for the data elements
x.labelRotation = M_PI/5;
x.labelingPolicy = CPTAxisLabelingPolicyNone;

NSArray *customTickLocations = [NSArray arrayWithObjects:[NSDecimalNumber numberWithInt:0], [NSDecimalNumber numberWithInt:1], [NSDecimalNumber numberWithInt:2], [NSDecimalNumber numberWithInt:3], [NSDecimalNumber numberWithInt:4], nil];


NSArray *xAxisLabels = [NSArray arrayWithObjects:@"a", @"b", @"c", @"d", @"e", nil];
NSUInteger labelLocation = 0;

NSMutableArray *customLabels = [NSMutableArray arrayWithCapacity:[xAxisLabels count]];
for (NSNumber *tickLocation in customTickLocations)
{
CPTAxisLabel *newLabel = [[CPTAxisLabel alloc] initWithText: [xAxisLabels objectAtIndex:labelLocation++] textStyle:x.labelTextStyle];
newLabel.tickLocation = [tickLocation decimalValue];
newLabel.offset = x.labelOffset + x.majorTickLength;
newLabel.rotation = M_PI/xAxisLength;
[customLabels addObject:newLabel];
}

x.axisLabels = [NSSet setWithArray:customLabels];

CPTXYAxis *y = axisSet.yAxis;
y.axisLineStyle = nil;
y.majorTickLineStyle = nil;
y.minorTickLineStyle = nil;
y.majorIntervalLength = CPTDecimalFromString(@"50");
y.orthogonalCoordinateDecimal = CPTDecimalFromString(@"0");
y.title = @"Work Status";
y.titleOffset = 40.0f;
y.titleLocation = CPTDecimalFromFloat(150.0f);

CPTGraphHostingView *hostingView = [[CPTGraphHostingView alloc] initWithFrame:CGRectMake(0, 0, 320, 360)];
hostingView.hostedGraph = barChart;
[self.view addSubview:hostingView];

CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *) barChart.defaultPlotSpace;
plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(0.0f) length:CPTDecimalFromDouble(16.0f)];
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(0.0f) length:CPTDecimalFromDouble(500.0f)];

CPTBarPlot *barPlot = [CPTBarPlot tubularBarPlotWithColor:[CPTColor blueColor] horizontalBars:NO];
barPlot.plotRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(0.0) length:CPTDecimalFromDouble(10)];//xAxisLength
barPlot.barOffset = CPTDecimalFromFloat(0.25f);
barPlot.baseValue = CPTDecimalFromString(@"0");
barPlot.barWidth = CPTDecimalFromFloat(10.0f);
barPlot.cornerRadius = 2.0f;
barPlot.dataSource = self;
[barChart addPlot:barPlot];
}

-(void) getGraphValues
{
int barValues [] = {10,50,100,200};//,150,200,10,20,30,40,50,100,400,450,350
int barNums = sizeof(barValues) / sizeof(int);

samples = [[NSMutableArray alloc] initWithCapacity:barNums];

for (int i = 0; i < 4; i++)
{
double x = i;
double y = barValues[i];
NSLog(@"XVal : %@", X_VAL);
NSDictionary *sample = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithDouble:30],X_VAL,[NSNumber numberWithDouble:y],Y_VAL,nil];
[samples addObject:sample];
}
}


-(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot
{
return [samples count];
}

-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index
{
NSDictionary *sample = [samples objectAtIndex:index];

if (fieldEnum == CPTScatterPlotFieldX)
return [sample valueForKey:X_VAL];
else
return [sample valueForKey:Y_VAL];
}

最佳答案

确保在build设置中设置了-all_load“其他链接器标志”。该标志强制系统加载所有类别方法,例如 -sizeWithTextStyle:

关于iphone - 如何在iPhone中实现条形图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12330501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com