SChartBarSeries and SChartColumn series were designed to always span from a baseline. I would have arrived at the same solution as you, that is, use a candlestick series. However, candlestick series don't have the same scaling behaviour as you've noted.
The bar column width is actually calculated once per data load. You'll notice if you zoom into a bar series, the bars actually get wider / thinner. You should be able to simply add your candlestick width algorithm to the sChartDidFinishLoadingData: method. You can then update your candlestick series width based off your algorithm.
// Assuming your candlestick series is the first series.
SChartCandlestickSeries *candlestickSeries = (SChartLineSeries *)chart.series;
candlestickSeries.style.trunkWidth = [self calculateTrunkForNumberOfSeries:... xAxisRange:...];
With regards to the actual 'width algorithm' itself, you'll probably want to look at the chart's x-range and the number of series. Both of which should be easily inspectable via the chart.
NSUInteger numberOfSeries = chart.series.count;