CPTXYGraph внутри UIScrollView - PullRequest
       6

CPTXYGraph внутри UIScrollView

2 голосов
/ 22 марта 2012

Кто-нибудь знает способ сделать ось фиксированной на CPTXYGraph, когда сам график находится внутри UIScrollView?

Чтобы уточнить, у меня есть CPTXYGraph отображение данных, которые шире, чемтекущий экран, поэтому я поместил его в UIScrollView с горизонтальной прокруткой (я знаю о раскрытии основного графика свойства userInteractionEnabled, но мне нужно сохранить ускорение и другие преимущества UIScrollView).Мне нужно, чтобы ось Y была зафиксирована в левой части экрана, что я обычно делал бы в методе layoutSubviews из UIScrollView.Мое первое предположение состояло в том, чтобы просто применить преобразование к CPTXYAxis, соответствующему текущему contentOffset (учитывая, что оно наследуется от CALayer), но, похоже, это не имеет никакого эффекта.Я также поэкспериментировал со свойством orthogonalCoordinateDecimal, но оно выглядит как тупик.

Есть ли кто-нибудь, кто сумел сделать эту работу?

Ответы [ 2 ]

2 голосов
/ 23 марта 2012

Для тех, кто хочет решить эту проблему, моё решение:

Вы можете использовать CPTConstraints для позиционирования оси, поэтому я сделал следующее в моем UIScrollView подклассе:

- (void)layoutSubviews {
    [super layoutSubviews];

    CGFloat xOffset = (self.contentOffset.x >= 0 ? self.contentOffset.x : 0.0f);

    CPTXYGraph *graph = [self graph];
    CPTXYAxisSet *axisSet = (CPTXYAxisSet *)[graph axisSet];
    CPTXYAxis *yAxis = [axisSet yAxis];

    [yAxis setAxisConstraints:[CPTConstraints constraintWithLowerOffset:xOffset]];
}

Этот код можно переназначить для всех фиксированных положений оси, используя разные инициализаторы для CPTConstraints.

0 голосов
/ 14 мая 2013
[plotSpace setAllowsUserInteraction:YES];
...