IOS простая гистограмма с анимацией - PullRequest
0 голосов
/ 25 января 2012

Мне нужно показать 2 гистограммы в моем приложении, я не хочу использовать core-plot, поскольку это излишне, чтобы показывать только 2 бара с различной высотой, [UIimageView with box.png]

я сделалнекоторые тесты, использующие только анимацию UIView, которых кажется достаточным для увеличения или уменьшения полосы, [проблема в том, что высота зависит от начальной точки, поэтому у моей панели нет точки 0 для Y, которая изменяется с высотойдля бара]

так, как я могу установить точку 0 для своей оси Y? Так что я просто должен думать о высоте, а не о начальной точке?

или я долженпойти с некоторой структурой генератора бара, которая не так уж убита как core-plot,,

, что является самым простым, самым легким весом?

power-plot

ecgraph , Другое?

PS.другой момент заключается в том, что мне нужно иметь собственный фон для графика и собственные бары, поэтому я использую box.png для баров]

код ...

viewDidLoad { ***
CGRect chartbackGroundImageRect = CGRectMake(150, 20, 632, 653);
UIImageView *chartbackGroundImage = [[UIImageView alloc] initWithFrame:chartbackGroundImageRect];
[chartbackGroundImage setImage:[UIImage imageNamed:@"chartArtBgnd.png"]];
chartbackGroundImage.opaque = YES; // explicitly opaque for performance
[self.view addSubview:chartbackGroundImage];
[chartbackGroundImage release];
CGRect leftBarImageRect = CGRectMake(550, 550, 81, 40);
leftBarImage = [[UIImageView alloc] initWithFrame:leftBarImageRect];
[leftBarImage setImage:[UIImage imageNamed:@"leftBar.png"]];
leftBarImage.opaque = YES; // explicitly opaque for performance
[self.view addSubview:leftBarImage];
[leftBarImage release];
***}

testBarAnimation {*** 
 // Setup the animation
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.2]; //animation for arrow
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationBeginsFromCurrentState:YES];

CGRect newFrame = CGRectMake(550, 300, 81, 290);

leftBarImage.frame = newFrame;


[UIView commitAnimations];
***}

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 25 января 2012

Определите служебную функцию:

CGRect modifyRectByHeight(CGRect originalRect, CGFloat newHeight)
{
    CGRect result = originalRect;

    result.origin.y += height;
    result.size.height += height;

    return result;
}

Затем используйте следующее:

leftBarImage.frame = modifyRectByHeight( leftBarImage.frame, 150);
1 голос
/ 25 января 2012

Не знаю, это применимо к вашему проекту. Но я использовал другой подход, поскольку в iOS нет хороших библиотек для Chart.

Я использовал UIWebview с бесплатными движками графиков на основе HTML5 / CSS, доступными в Интернете. Для меня это работает нормально, немного медленнее, чем родные графики, но для моего проекта будет достаточно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...