刻度标记在标记X轴时消失

时间:2012-03-03 12:13:36

标签: iphone objective-c ios core-plot

我正在使用“Core-Plot”绘制图表。当我使用以下代码的x轴时,它工作正常。

            axisSet.xAxis.titleTextStyle = textStyle;
            axisSet.xAxis.titleOffset = 2.0f;
            axisSet.xAxis.axisLineStyle = axisLineStyle;
            axisSet.xAxis.majorTickLineStyle = axisLineStyle;
            axisSet.xAxis.minorTickLineStyle = axisLineStyle;
            axisSet.xAxis.labelTextStyle = textStyle;
            axisSet.xAxis.labelOffset = 0.0f;
            axisSet.xAxis.minorTicksPerInterval = 1;
            axisSet.xAxis.minorTickLength = 0.0f;
            axisSet.xAxis.majorTickLength = 5.0f;

            plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f) length:CPTDecimalFromFloat(7.0f)];
            axisSet.xAxis.majorIntervalLength = CPTDecimalFromFloat(1.0f);

但是当我使用这样的代码时:

// --------------------------------------------- -----------------------------

    NSArray *arr;
    NSString *month;
    NSString *days;

    NSDateFormatter *format=[[NSDateFormatter alloc]init];
    [format  setDateFormat:@"yyyy/MM/dd"];

    NSDate *day=[NSDate date];
    NSDate *week  = [day dateByAddingTimeInterval: -604800.0];
    NSDate *day1  = [NSDate dateWithTimeInterval:(24*60*60) sinceDate:week];
    NSDate *day2  = [NSDate dateWithTimeInterval:(24*60*60) sinceDate:day1];
    NSDate *day3  = [NSDate dateWithTimeInterval:(24*60*60) sinceDate:day2];
    NSDate *day4  = [NSDate dateWithTimeInterval:(24*60*60) sinceDate:day3];
    NSDate *day5  = [NSDate dateWithTimeInterval:(24*60*60) sinceDate:day4];
    NSDate *day6  = [NSDate dateWithTimeInterval:(24*60*60) sinceDate:day5];
    NSDate *today = [NSDate dateWithTimeInterval:(24*60*60) sinceDate:day6];

    NSString *str1  =[format stringFromDate:day1];
    arr=[str1 componentsSeparatedByString:@"/"];
    month=[arr objectAtIndex:1];
    days=[arr objectAtIndex:2];
    str1=[days stringByAppendingFormat:@":%@",month];

    NSString *str2  =[format stringFromDate:day2];
    arr=[str2 componentsSeparatedByString:@"/"];
    month=[arr objectAtIndex:1];
    days=[arr objectAtIndex:2];
    str2=[days stringByAppendingFormat:@":%@",month];


    NSString *str3  =[format stringFromDate:day3];
    arr=[str3 componentsSeparatedByString:@"/"];
    month=[arr objectAtIndex:1];
    days=[arr objectAtIndex:2];
    str3=[days stringByAppendingFormat:@":%@",month];

    NSString *str4  =[format stringFromDate:day4];
    arr=[str4 componentsSeparatedByString:@"/"];
    month=[arr objectAtIndex:1];
    days=[arr objectAtIndex:2];
    str4=[days stringByAppendingFormat:@":%@",month];

    NSString *str5  =[format stringFromDate:day5];
    arr=[str5 componentsSeparatedByString:@"/"];
    month=[arr objectAtIndex:1];
    days=[arr objectAtIndex:2];
    str5=[days stringByAppendingFormat:@":%@",month];


    NSString *str6  =[format stringFromDate:day6];
    arr=[str6 componentsSeparatedByString:@"/"];
    month=[arr objectAtIndex:1];
    days=[arr objectAtIndex:2];
    str6=[days stringByAppendingFormat:@":%@",month];


    NSString *str7  =[format stringFromDate:today];
    arr=[str7 componentsSeparatedByString:@"/"];
    month=[arr objectAtIndex:1];
    days=[arr objectAtIndex:2];
    str7=[days stringByAppendingFormat:@":%@",month];
    //--------------------------------------------------------------------------------

    axisSet.xAxis.title=@"-----One Week----->";
    axisSet.xAxis.titleTextStyle =textStyle;
    axisSet.xAxis.titleOffset = 10.0f;
    axisSet.xAxis.axisLineStyle = axisLineStyle;
    axisSet.xAxis.labelTextStyle = mtextStyle;
    axisSet.xAxis.labelOffset = 0.0f;
    axisSet.xAxis.majorTickLength = 1.0f;

    plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0)   length:CPTDecimalFromFloat(7)];
    axisSet.xAxis.majorIntervalLength = CPTDecimalFromFloat(1.0f);

    //--------------labeling X-axis------------------------------------------

    axisSet.xAxis.labelRotation = M_PI/4;
    axisSet.xAxis.labelingPolicy = CPTAxisLabelingPolicyNone;
    NSArray *customTickLocations = [NSArray arrayWithObjects:
                                    [NSDecimalNumber numberWithInt:1], 
                                    [NSDecimalNumber numberWithInt:2], 
                                    [NSDecimalNumber numberWithInt:3], 
                                    [NSDecimalNumber numberWithInt:4],
                                    [NSDecimalNumber numberWithInt:5],
                                    [NSDecimalNumber numberWithInt:6],
                                    [NSDecimalNumber numberWithInt:7],nil];
    NSArray *xAxisLabels = [NSArray arrayWithObjects:str1,str2,str3,str4,str5,str6,str7,nil];
    NSUInteger labelLocation = 0;
    NSMutableArray *customLabels = [NSMutableArray arrayWithCapacity:[xAxisLabels count]];

    for (NSNumber *tickLocation in customTickLocations) 
    {
        CPTAxisLabel *newLabel = [[CPTAxisLabel alloc] initWithText: [xAxisLabels objectAtIndex:labelLocation++] textStyle:axisSet.xAxis.labelTextStyle];
        newLabel.tickLocation = [tickLocation decimalValue];
        newLabel.offset = axisSet.xAxis.labelOffset + axisSet.xAxis.majorTickLength;
        [customLabels addObject:newLabel];
        [newLabel release];
    }
    axisSet.xAxis.axisLabels =  [NSSet setWithArray:customLabels];
    //--------------------------------------------------------------------------- 

然后在x轴disaapears上打勾。我到处搜索但无法找到相关答案。所以,如果有人能做到,请告诉我。在此先感谢!!

1 个答案:

答案 0 :(得分:0)

CPTAxisLabelingPolicyNone标签政策要求您单独提供刻度线位置。这样可以最大限度地提高标签的灵活性 - 您不必标记每个刻度线,也可以在没有刻度线的位置放置标签。

axisSet.xAxis.majorTickLocations = [NSSet setWithArray:customTickLocations];

如果您需要次要刻度,则还需要设置minorTickLocations