Ah Samuel, I missed out two parts of the solution, I do apologise.
1) You would need to put a guard around your [self align:myChart] call, to ensure that your chart is only aligned once. This should stop the recursion.
2) To explain the expanding of the chart, first I will have to explain a little about how the legend works. The legend is automatically placed, following the placement rules you set on it. Since the legend is a UIView you have the option of setting its frame manually (you can even add it as a subview to something else!). However, when you do this you become responsible for the legend's positioning and the legend essentially moves out of the "flow" of the chart. This means that the chart's canvas spans to fit the full size of its parent's (the chart's) frame.
Currently, there is no way on our API to "un-manage" our legend after we have taken control of it, which is exactly what we need to do, but for Objective-C users there is a work-around. We need to create a category on SChartLegend which exposes the BOOL variable setUserSetFrame. This is a private API property that we use internally to check whether the user has manually set the frame of their legend, so all we need to do is set this property back to NO.
This is the category we need to create on SChartLegend:
@interface SChartLegend (hidden)
- (void) setUserSetFrame:(BOOL)frameSet;
Then after the align calls, do:
This should put your chart back to assuming automatic layout, and your chart should now be blurless !
Would you be able to give the above a try and let me know if it works for you?