CorePlot: как получить правильное значение после увеличения?Как получить правильный масштабный масштаб после увеличения? - PullRequest
0 голосов
/ 26 октября 2011
  1. Как получить правильное значение после увеличения?
  2. Как получить правильный масштабный масштаб после увеличения?
  3. Как поставить Yaxis на другую сторону, как на следующем фото

enter image description here

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

Я пытаюсь использовать эту функцию, чтобы получить масштаб

-(BOOL)plotSpace:(CPTPlotSpace*)space shouldScaleBy:(CGFloat)interactionScale aboutPoint:(CGPoint)interactionPoint

Но номер шкалы, который я получаю, неверен

Всем, пожалуйста, помогите !!!

Это правильный снимок экрана:

enter image description here

и это не тот

enter image description here

-(BOOL)plotSpace:(CPTPlotSpace*)space shouldScaleBy:(CGFloat)interactionScale aboutPoint:(CGPoint)interactionPoint
{
    NSDecimal plotPoint[2]; 
    CPTXYPlotSpace *xySpace = (CPTXYPlotSpace *)space; 
    [xySpace plotPoint:plotPoint forPlotAreaViewPoint:interactionPoint]; 
    NSLog(@"Dragg Event Scale:  %f",real_scaleValue);
    NSString *showingcontent_testing=[NSString stringWithFormat:@"Scale Y VAlue $:%f", 
                                      ([[NSDecimalNumber decimalNumberWithDecimal:plotPoint[CPTCoordinateY]] doubleValue])];

    return YES;
}


// This method is call when user touch & drag on the plot space.

- (BOOL)plotSpace:(CPTPlotSpace *)space shouldHandlePointingDeviceDraggedEvent:(id)event atPoint:(CGPoint)point
{        
    if( ((self.view.frame.size.height- point.y+20)<324)
       &&((self.view.frame.size.height- point.y+20)>22))
    {

        NSDecimal plotPoint[2]; 

        CPTXYPlotSpace *xySpace = (CPTXYPlotSpace *)space; 

        [xySpace plotPoint:plotPoint forPlotAreaViewPoint:point]; 

        NSLog(@"Dragg Event Scale:  %f",real_scaleValue);

        showingcontent=[NSString stringWithFormat:@"Price $:%f", 
                        (([[NSDecimalNumber decimalNumberWithDecimal:plotPoint[CPTCoordinateY]] doubleValue])*real_scaleValue)-13.42623-5.573770-0.163934];

        current_price_show.text=showingcontent;

        [self.view bringSubviewToFront:current_price_show];

        CGRect separator_line_frame = separator_line.frame;

        separator_line_frame.origin.y =self.view.frame.size.height- point.y+20; 

        // final y destination

        separator_line.frame = separator_line_frame;

        [self.view bringSubviewToFront:separator_line];

    }
    return YES;
}

1 Ответ

1 голос
/ 27 октября 2011

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

Чтобы переместить ось y вправо, уменьшите отступ справа и убедитесь, что вид хостинга занимает всю ширину экрана.

...