2013-03-09 2 views
1

Я работаю над проектом Core Plot и столкнулся с проблемой. Мои метки оси X - это более одной строки. Я хочу, чтобы они были полностью центрированы, и единственный способ, которым я смог это сделать, - это вручную добавить пробелы в NSString, который является меткой. Пожалуйста, смотрите ниже код ...Центрирование Многострочные метки в Core Plot, iOS

NSDictionary *dataTemp=[NSDictionary dictionaryWithObjectsAndKeys:white,@"  
White\rBuilding\r(220 max)",rec,@"Rec. Hall\r(240 max)",im,@" IM\rBuilding\r(60 
max)",fit,@"Fitness\r Loft\r(40 max)",nil]; 

Я думаю, что есть способ, чтобы выровнять метки программно, но я до сих пор найти его. Буду признателен за любую помощь. Вот скриншот того, что на графике метки выглядит

enter image description here

Вот код, где я определить метки по оси X ...

//Array containing all the names that will be displayed on the X axis 
dates = [NSArray arrayWithObjects:@"Rec. Hall\r(240 max)", @" White\rBuilding\r(220 
max)", @" IM\rBuilding\r(60 max)", 
     @"Fitness\r Loft\r(40 max)", nil]; 

И вот код, где я делаю этикетки на диаграмма

//X labels 
int labelLocations = 0; 
NSMutableArray *customXLabels = [NSMutableArray array]; 
for (NSString *day in dates) { 
    CPTAxisLabel *newLabel = [[CPTAxisLabel alloc] initWithText:day 
textStyle:x.labelTextStyle]; 
    newLabel.tickLocation = [[NSNumber numberWithInt:labelLocations] decimalValue]; 
    newLabel.offset   = x.labelOffset + x.majorTickLength; 
    [customXLabels addObject:newLabel]; 
    labelLocations++; 
    [newLabel release]; 
} 
x.axisLabels     = [NSSet setWithArray:customXLabels]; 

ответ

1

Это должно работать - вы должны попробовать использовать textAlignment собственность на этикетках:

label.textAlignment = NSTextAlignmentCenter; 

Как отмечалось @Martin, можно также добавить UILineBreakModeWordWrap так линия-брейки происходят только после того, как целых слов:

label.lineBreakMode = UILineBreakModeWordWrap; 
+1

И добавить NSLinebreakByWordWrapping так что разрывы строк происходят с целыми словами –

+0

к сожалению, не работали ... Я редактировал свой пост, чтобы включить больше коды, хотя. Я думаю, что что-то не так с тем, как я создаю ярлыки. Когда я пытаюсь выполнить newLabel.textAlignment, это не сработает. – pj409

+0

@ pj409 Попробуйте использовать labelAlignment = CPAlignmentCenter; и проверьте эту ссылку: https://code.google.com/p/core-plot/source/detail?r=cd1f17fc48# - убедитесь, что вы нажмете на "expand all" – lifetimes

0

Убедитесь, что стиль текста, используемый при создании этикеток (x.labelTextStyle) включает в себя следующее свойство установка:

textStyle.textAlignment = CPTTextAlignmentCenter; 
Смежные вопросы