图表在核心图中消失

时间:2014-11-06 05:50:48

标签: ios objective-c iphone ipad core-plot

在我的应用中,我正在使用核心情节。一切都很好,如下所示 Graph with values

在按next或prev按钮时,核心图显示下一个或前7天的值。当我按下按钮多次说142次时,图形消失,核心图仅显示x和y标签,如下所示。Error。 并点击更多的应用程序崩溃。我该如何解决我的问题?请帮忙。它也显示在调试区域中

  

malloc: * mach_vm_map(size = 8388608)失败(错误代码= 3)   * 错误:无法安全地分配区域   ***在malloc_error_break中设置断点以进行调试

它还在DateFormatter

提供了错误的访问权限

我不知道我的问题在哪里。我生成图表的代码是......

- (void)generateLayout
{

//Create graph from theme
self.graph                               = [[CPTXYGraph alloc] initWithFrame:CGRectZero];

CPTTheme *theme = [CPTTheme themeNamed:kCPTPlainWhiteTheme];
self.graph = (CPTXYGraph *)[theme newGraph];

//graph.fill = [CPTFill fillWithColor:[CPTColor clearColor]];
self.graph.plotAreaFrame.fill = [CPTFill fillWithColor:[CPTColor colorWithComponentRed:183.0/255.0 green:206.0/255.0 blue:227.0/255.0 alpha:1.0]];


//[graph applyTheme:[CPTTheme themeNamed:kCPTDarkGradientTheme]];
self.hostedGraph                         = self.graph;
self.graph.plotAreaFrame.masksToBorder   = NO;
self.graph.paddingLeft                   = 0.0f;
self.graph.paddingTop                    = 0.0f;
self.graph.paddingRight                  = 0.0f;
self.graph.paddingBottom                 = 0.0f;

CPTMutableLineStyle *borderLineStyle    = [CPTMutableLineStyle lineStyle];
borderLineStyle.lineColor               = [CPTColor clearColor];
borderLineStyle.lineWidth               = 2.0f;
self.graph.plotAreaFrame.borderLineStyle     = borderLineStyle;
self.graph.plotAreaFrame.paddingTop          = 10.0;
self.graph.plotAreaFrame.paddingRight        = 10.0;
self.graph.plotAreaFrame.paddingBottom       = 30.0;
self.graph.plotAreaFrame.paddingLeft         = 50.0;

//Add plot space
CPTXYPlotSpace *plotSpace       = (CPTXYPlotSpace *)self.graph.defaultPlotSpace;
plotSpace.delegate              = self;
/////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////// Here We Can Set The Range Of Y Axis////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
plotSpace.yRange    = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(0) length:CPTDecimalFromInt(greaterGlass * sets.count)];

//plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0) length:CPTDecimalFromFloat(greaterGlass * sets.count)];

plotSpace.xRange                = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(-1)
                                                               length:CPTDecimalFromInt(8)];

//Grid line styles
CPTMutableLineStyle *majorGridLineStyle = [CPTMutableLineStyle lineStyle];
majorGridLineStyle.lineWidth            = 2.75;
majorGridLineStyle.lineColor            = [[CPTColor colorWithComponentRed:113.0/255.0 green:91.0/255.0 blue:84.0/255.0 alpha:1.0] colorWithAlphaComponent:1.0];
CPTMutableLineStyle *minorGridLineStyle = [CPTMutableLineStyle lineStyle];
minorGridLineStyle.lineWidth            = 0.50;
minorGridLineStyle.lineColor            = [[CPTColor whiteColor] colorWithAlphaComponent:0.1];

majorGridLineStyle.dashPattern = [NSArray arrayWithObjects:[NSNumber numberWithInteger:1], [NSNumber numberWithInteger:5], nil];

//Axes
CPTXYAxisSet *axisSet = (CPTXYAxisSet *)self.graph.axisSet;

//X axis
CPTXYAxis *x                    = axisSet.xAxis;
x.orthogonalCoordinateDecimal   = CPTDecimalFromInt(0);
x.majorIntervalLength           = CPTDecimalFromInt(1);
x.minorTicksPerInterval         = 0;
x.labelingPolicy                = CPTAxisLabelingPolicyNone;
x.majorGridLineStyle            = majorGridLineStyle;
x.axisConstraints               = [CPTConstraints constraintWithLowerOffset:0.0];

//X labels
int labelLocations = 0;


//NSMutableArray *customXLabels = [NSMutableArray array];
NSMutableArray *customXLabels = [NSMutableArray arrayWithCapacity:[dates count]];
//for (NSString *day in dates)
for(int couter=0; couter<[dates count]; couter++)
{
    NSString *day = [NSString stringWithFormat:@"%@",[dates objectAtIndex:couter]];
    CPTAxisLabel *newLabel = [[CPTAxisLabel alloc] initWithText:day textStyle:x.labelTextStyle];
    newLabel.tickLocation   = [[NSNumber numberWithInt:labelLocations] decimalValue];
    newLabel.offset         = x.labelOffset + x.majorTickLength;
    //newLabel.rotation       = M_PI / 4;
    [customXLabels addObject:newLabel];
    labelLocations++;
    [newLabel release];
}

x.axisLabels                    = [NSSet setWithArray:customXLabels];

//Y axis
CPTXYAxis *y            = axisSet.yAxis;

CGRect frame = CGRectMake(0, 0, 50, 30);
UILabel *label = [[UILabel alloc] initWithFrame:frame] ;
label.font = [UIFont fontWithName:@"ComicSansMS-Bold" size:12.0];
label.textAlignment = NSTextAlignmentCenter;
label.text = @"Number of Glasses";

y.title                 = label.text;
y.titleOffset           = 50.0f;
y.labelingPolicy        = CPTAxisLabelingPolicyAutomatic;
y.majorGridLineStyle    = majorGridLineStyle;
y.minorGridLineStyle    = minorGridLineStyle;
y.axisConstraints       = [CPTConstraints constraintWithLowerOffset:0.0];

//Create a bar line style
CPTMutableLineStyle *barLineStyle   = [[[CPTMutableLineStyle alloc] init] autorelease];
barLineStyle.lineWidth              = 1.0;
barLineStyle.lineColor              = [CPTColor whiteColor];
CPTMutableTextStyle *whiteTextStyle = [CPTMutableTextStyle textStyle];
whiteTextStyle.color                = [CPTColor whiteColor];

//Plot
BOOL firstPlot = YES;
for (NSString *set in [[sets allKeys] sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]) {
    //UIColor *myColor = [UIColor colorWithRed:87.0/255.0 green:181.0/255.0 blue:229.0/255.0 alpha:1.0];
    //CPTColor *mineColor = [CPTColor colorWithComponentRed:160 green:97 blue:5 alpha:1];
    CPTBarPlot *plot        = [CPTBarPlot tubularBarPlotWithColor:[CPTColor blueColor] horizontalBars:NO];
    plot.lineStyle          = barLineStyle;
    CGColorRef color        = ((UIColor *)[sets objectForKey:set]).CGColor;

    //plot.fill               = [CPTFill fillWithColor:[CPTColor colorWithCGColor:color]];

    plot.fill               = [CPTFill fillWithColor:[CPTColor colorWithComponentRed:111.0/255.0 green:164.0/255.0 blue:205.0/255.0 alpha:1.0]];

    if (firstPlot) {
        plot.barBasesVary   = NO;
        firstPlot           = NO;
    } else {
        plot.barBasesVary   = YES;
    }
    plot.barWidth           = CPTDecimalFromFloat(0.5f);
    plot.barsAreHorizontal  = NO;
    plot.dataSource         = self;
    plot.identifier         = set;
    [self.graph addPlot:plot toPlotSpace:plotSpace];
}

}

0 个答案:

没有答案