2016-02-11 8 views
0

В UIViewController (подумайте о макете пейзажа iPad) Я показываю 3 диаграммы (один рядом друг с другом) с серией пончиков, каждая из которых и их легенда отображаются внизу внизу, за пределами участка, представления, содержащие диаграммы, имеют одинаковый размер.ShinobiCharts - Площадь участка пончика

Каждый график показывает до 5 значений, поэтому, когда они имеют одинаковое количество значений, все пончики и легенды выглядят идеально совмещенными друг с другом.

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

Есть ли способ исправить площадь участка в определенном размере? Моя цель заключалась бы в том, чтобы все пончики и легенды выглядели выровненными независимо от количества значений для каждой серии.

Спасибо!

ответ

0

Начиная с ответа MrAPolk, мне удалось реализовать решение моей проблемы.

Эти шаги я последовал:

  1. В Interface Builder, для каждого из моих графиках я обнажающих диаграмму контейнер UIView с адекватным размером, чтобы содержать только пончики; затем я нарисовал еще один UIView как контейнер условных обозначений, расположенный под контейнером диаграммы.
  2. В настройке диаграммы я подгоняю легенду к моим потребностям и устанавливаю ее как скрытый (chart.legend.hidden = YES;).
  3. Я реализовал SChartDelegate метод sChartRenderFinished:, чтобы сделать что-то вроде этого:

    - (void)sChartRenderFinished:(ShinobiChart *)chart { 
        SChartLegend *legend = chart.legend; 
        [legend removeFromSuperview]; 
        legend.hidden = NO; 
        legend.frame = legendContainer.bounds; //legendContainer is the UIView defined in IB 
        [legendContainer addSubview:legend]; 
        [legend setNeedsDisplay]; 
    } 
    

ответ MrAPolk в самом деле не решить мою проблему, но она сверкала это решение, так что я дал бы ему +1, если Я мог бы.

1

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ Я разработчик в Shinobi Controls.

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

Это означает, что вы можете разместить свою легенду, где хотите, и график не будет изменять размер его холста в зависимости от размера легенды.

Это может означать, что вам нужно дать диаграмме меньшую начальную рамку, чтобы вы могли поместить свою легенду рядом с диаграммой.

Если у вас есть какие-либо вопросы, не стесняйтесь обращаться к нам!

С уважением, Andrew Polkinghorn.

+0

Спасибо, Андрей. Я пытаюсь реализовать ваше предложение, но я не могу заставить его работать. Какую бы рамку я установить (чтобы быть ясной, я делаю это с помощью 'chart.legend.frame = frame;', правильно?), Я продолжаю получать эту ошибку: 'SChartLegend at% p: Указанная высота надписи слишком мал, чтобы соответствовать количеству/расположению серий.Попробуйте увеличить maxSeriesPerLine или увеличить высоту легенды. ' Что мне не хватает? Еще раз спасибо. –

Смежные вопросы