0

У меня возникли трудности с использованием библиотеки PNChart (https://github.com/kevinzhow/PNChart) с раскадровки и uistackviews. Я ожидаю, что диаграмма просто заполнит пространство существующего uiview, в которое я добавляю pnchart в код. Однако диаграмма отображается на экране, а не в пределах uiview.Проблемы с PNChart и UIStackview с помощью раскадровки

Вот скриншот проблемы - заметьте, что я сделал UIView, что я добавляю диаграмму в синюю, чтобы я мог видеть, что она имеет правильный макет. Как видите, диаграмма намного больше, чем uiview, к которой она добавлена, и вы не можете видеть y-элементы или весь график.

enter image description here

Вот моя раскадровки структура enter image description here

  • Graph View является UIView - Я добавление PNChart как подвид этого. Вот мой код:
CGRect graphViewFrame = _graphView.frame; 
PNLineChart * lineChart = [[PNLineChart alloc] initWithFrame:graphViewFrame]; 
[lineChart setXLabels:@[@"SEP 1",@"SEP 2",@"SEP 3",@"SEP 4",@"SEP 5"]]; 

// Line Chart No.1 
NSArray * data01Array = @[@60.1, @160.1, @126.4, @262.2, @186.2]; 
PNLineChartData *data01 = [PNLineChartData new]; 
data01.color = PNFreshGreen; 
data01.itemCount = lineChart.xLabels.count; 
data01.getData = ^(NSUInteger index) { 
     CGFloat yValue = [data01Array[index] floatValue]; 
     return [PNLineChartDataItem dataItemWithY:yValue]; 
}; 
// Line Chart No.2 
NSArray * data02Array = @[@20.1, @180.1, @26.4, @202.2, @126.2]; 
PNLineChartData *data02 = [PNLineChartData new]; 
data02.color = PNTwitterColor; 
data02.itemCount = lineChart.xLabels.count; 
data02.getData = ^(NSUInteger index) { 
    CGFloat yValue = [data02Array[index] floatValue]; 
    return [PNLineChartDataItem dataItemWithY:yValue]; 
}; 

lineChart.chartData = @[data01, data02]; 
[lineChart strokeChart]; 
[_graphView addSubview:lineChart]; 

Вот подробности о представлении стека enter image description here

Любые идеи или рекомендации оценены. Я уже связался с разработчиком PNChart.

ответ

2

Вы используете классы размеров? Убедитесь, что первый кадр, который вы получаете и используете, действительно является кадром, который вы ожидаете после представления. Например, если вы используете Xib, кадр до и после «viewDidApear» различен при каждом размере экрана.

Secound, используйте «clipToBounds», чтобы убедиться, что график не выполняется из установленных вами границ.

self.lineChart.clipsToBounds = YES; 

Успехов

+0

Я устал клипы границ, но это не помогло. Я не использую классы размера ... насколько я знаю. – user1542125

+0

1. Вы используете клип для ограничения перед «strokeChart»? 2. Строки: [lineChart strokeChart]; [_graphView addSubview: lineChart]: вы должны сначала добавить как subview, а затем вызвать штрих. 3. Попытайтесь использовать инструменты отладки, чтобы увидеть, меняется ли кадр, у меня была такая же проблема в прошлом с PNCharts, и это было – MCMatan

+0

. Проблема в том, что clipToBounds зажимает диаграмму, я хочу, чтобы она изменялась или изменялась внутри границы родительского uiview – user1542125

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