How to animate bar height growth in core plot? - iphone

I am developing a plotting app which uses core plot. I want to animate the bar-chart height growth. I haven't used CALayer animations before. I saw some details of it but couldn't find any way to fulfill my motive using that. Though I feel it can have a role to play as charts are highly sub classed CALayers. Please correct if I am wrong and guide me to use animations to show growth of bar charts.

CABasicAnimation and michele's answer for this question did the trick for me and the charts are animating smoothly now :)

Related

How to draw number into circle shape?

I am trying to draw the numbers into circle shape.
But I did not succeed. I have tried some tutorials which are available but could not succeed.
We haven't fixed the numbers to show in circle. Numbers are dynamic.
I am attaching snapshot below so that I could clear what I am really trying to do.
Help would be appreciated.
You could use David's suggestion of placing labels by translating and rotating them. That would be easiest, but would involve a fair amount of overhead.
Alternatively you could use CoreText to draw your text along a CGPath that's a circle. Erica Sadun's excellent "iOS Developer Cookbook" series includes a recipe that shows how to wrap text along a curved path using Core Text. I don't remember which volume it's in however.
A third option would be to use Nick Lockwood's excellent iCarousel framework to create a circular carousel out of the numbers you're using. It is very flexible and you should be able to adjust the settings to get a look very similar to the control you've posted.

percent graphical representation as circle

im planning to do a percentage visualisation using a circle, and am currently trying to figure out what framework / technique to use.
i have used corePlot for graphs so far and have been wondering if it might be an option
my ideas are so far:
1: use a Core Plot piechart and add a covering circle layer in the middle
2: try to use quartz 2d to do it somehow
attached is a mockup how it should look like so you get an idea:
what do you think might be the best approach here? id like avoid using cover-up subviews and such..
is there any simple solution i might be missing?
thanks in advance
sebastian
(PS: i do not hope for any code here, just a general fingerpoint to the right direction)
As more of an alternative than an actual straightforward CorePlot answer, you could display your percentage in a customized version of the UICircularProgressView control which I can personally vouch for.

Good strategy for creating bar chart with touch-to-view-value functionality?

I want to create a bar chart diagram. I already have a diagram component, I just need to adapt it to a bar chart. When touching one of the bars, the value shold pop up in small view.
As I can see there are several different strategies that can be applied here. What I want to know is which strategy should I use? Any of these or perhaps there are other better ideas?:
Bar is a UIButton.
Bar is a touch enabled UIImage.
Bar is a UIView.
Bar is just painted graphics and I have to transcode the touched coordinates and make some calculations in order to know what bar was touched. I don't don't believe in this strategy but perhaps there are reasons to rethink this that you can provide for me...
I assume that a UILable is the way to present the data associated with the bar?
Thanks in advance for your advice!
In my humble opinion, and having written many bar charts (and other charts)... #4 is actually the correct choice for performance and my personal preference. Creating the virtual graph in memory to map touches to bars is not difficult at all, as you are simply storing rectangles in arrays and checking to see if points are inside that rect.
CGRectContainsPoint(CGRect, CGPoint);
Now, having said that, if you want to introduce animations in to your chart, which is pretty cool stuff... then I could create a UIView composed of several UIViews (one for each bar, or bar segment), this way you can animate each bar individually without writing your own animation loop.
just my two cents.
my thoughts are that #2 and #3 are kind of the same since you'd display an image using a UIImageView. UIButton is a pretty thin layer on UIView that makes the event handling easy, but it might do things visually you don't want (or maybe you do?). Either way, it's so easy to try these variations I'd just play with it. I can't see a specific reason for #4 unless your overall strategy drives you in this direction, like maybe you start doing some drawing that is rich/complex enough that you have too many views being created.
AFA the popup display, it really depends what you mean by "pop up". Like once it pops up, do you need a way to dismiss that popup?
Have you checked out Core Plot? It is an active and powerful library that is pretty flexible and should meet all your needs.

How do I create a custom page curl Core Animation?

I'm trying to create a "page curl" animation of an image in my iPhone application. I t UIViewAnimationTransitionCurlUp, and it's undocumented Core Animation siblings, however the image I need to animate is a transparent PNG, with "uneven" (some alpha pixels) outlines. When using the aforementioned pre-made transition, those alpha pixels are painted black as soon as the animation starts, which looks terribly ugly.
Therefore, I seek to create a Core Animation of my own. I have tried to research the subject, but have been unable to find a good overview of the techniques involved. The implementation would of course have to be more complex than a single property change, I get the feeling that even CATransform3D would be to limited for this purpose, as the image needs to have different 3D transformations applied in different parts of it - changing over time. How would one then go about this subject? I'm very grateful for any thoughts or ideas!
Best,
Eli
As Corey points out, you'll probably need to go with OpenGL ES for this one. Core Animation exposes the ability to work with layers, even in 3-D, but all layers are just rectangles and they are manipulated as such. You can animate the flipping of a layer about an axis, even with a perspective distortion, but the kind of curving you want to do is more complex than you can manage using the Core Animation APIs.
You might be able to split your image up into a mesh of tiny layers and manipulate each using a CATransform3D to create this curving effect, but at that point you might as well be using OpenGL ES to create the same effect.
The book Core Animation for Mac OS X and the iPhone: Creating Compelling Dynamic User Interfaces from Pragmatic Programmer may help you write custom Core Animation animations.

Can you animate gradients using Quartz in an iPhone?

I am new to iPhone development and am currently toying with recreating a charting tool I developed for Silverlight.
Currently I'm using a gradient to 'fill' a rectangle representing a bar within a chart. Is it possible to animate this gradient so it changes colour when a user touches the bar within the chart.
I have looked through the Core Animation guides provided by Apple but cannot see a property which targets gradients. I suppose I could use a transition to fade between two rects, one of which has my starting gradient and the second with the 'touched' version but this would mean obviously drawing multiple rect objects for each bar with I assume extra performace overheads.
Any ideas?
Yes, indeed you can animated gradients with Core Animation.
The CAGradientLayer class that came out in 3.0 has a nice API for rendering gradients into a layer and animating color and color-stop changes as well.
I did a post on this class a little while back, along with some sample code that's linked at the bottom.
In the sample I animate the gradient by building a CABasicAnimation, but you can implicitly animate the change as well, by just passing a new array of colors to the gradient layer's colors property. Use implicit animations unless you have a reason not to.
Check that out and let me know if you have any questions specific to the UI you're trying to animate.