Проблемы PNChart и UIStackview при использовании раскадровки

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

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

Вот моя структура раскадровки

  • Графическое представление является 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];

Вот подробности в представлении стека

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

1 ответ

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

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

self.lineChart.clipsToBounds = YES;

Удачи

Другие вопросы по тегам