2

コアプロットに問題があり、それが原因で悲しみが生じ、インターネットを精査しても解決策が見つかりません。非常に単純な見落としだと思いますが、私の人生ではそれが何であるかを理解することはできません。

基本的に、コアプロットでカスタムラベルを設定すると、関連する配列に目盛りの位置やラベルなどの正しいデータが入力されていても、目盛りの位置0に表示されるラベルは1つだけです。

customLabels配列にnewLabelsを手動で入力して、カスタムラベルルーチンをバイパスしましたが、これは機能したため、ルーチンのどこかに基本的なものが欠けているのではないかと心配しています。

NSUInteger labelLocation = 0;
NSMutableArray *customLabels = [[NSMutableArray alloc] initWithCapacity:[self.days count]];


for (NSNumber *tickLocation in self.customTickLocations)
{

    CPTAxisLabel *newLabel = [[CPTAxisLabel alloc] initWithText:[self.dateLabels objectAtIndex:labelLocation] textStyle:axisTextStyle];
newLabel.tickLocation = [tickLocation decimalValue];
    int i = [tickLocation intValue];

    newLabel.offset = 5.0f;
    newLabel.rotation = M_PI/4;

    [customLabels addObject:newLabel];
    NSLog(@"Label is %@", [self.dateLabels objectAtIndex:labelLocation]);

    labelLocation = labelLocation + 1;


    NSLog(@"Tick Location is %i", i);
}
NSLog(@"Number of labels is %i", [customLabels count]);

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

NSLog(@"I have set customlabels");

これは私のログです:

2012-09-11 10:39:23.725 SnoozeBaby [12000:c07]ラベルは9月11日です

2012-09-11 10:39:23.725 SnoozeBaby [12000:c07]ティックの場所は0です

2012-09-11 10:39:23.725 SnoozeBaby [12000:c07]ラベルは9月10日

2012-09-11 10:39:23.726 SnoozeBaby [12000:c07]ダニの場所は150です

2012-09-11 10:39:23.726 SnoozeBaby [12000:c07]ラベルの数は2です

2012-09-11 10:39:23.728 SnoozeBaby [12000:c07]カスタムラベルを設定しました

4

1 に答える 1

1

CPTAxisラベル付けポリシーを?に設定していCPTAxisLabelingPolicyNoneますか?これを行わないと、ラベルを表示できません。

2つ目の注意点は、CPTAxisLabel反復ごとに作成している各オブジェクトを解放するわけではないということです。

私はこれをテストしていませんが、最初に場所を設定し、次にラベルを設定する必要があります。

axisSet.xAxis.majorTickLocations = [NSSet setWithArray:self.customTickLocations];
axisSet.xAxis.axisLabels = [NSSet setWithArray:customLabels];
于 2012-09-12T07:43:18.817 に答える