Sorry, I wasn't thinking right yesterday. The beginning of my first answer remains the same.
Bar plot's labels are (to the best of my very limited knowledge) set to the max value of a bar. So in order to get the label offset to the bottom of the graph, you need to to come up with an algorithm that works well for the graph you have. The best place to set the offset, in my opinion, is in the numberForPlot delegate function when the fieldEnum is CPTBarPlotFieldBarTip. I couldn't spend very much time figuring out the proper algorithm, but if you use the Plot_Gallery_iOS example project and edit VerticalBarChart.m, you'll find a wide range of offsets you have to use. Here's what little I did find though:
-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index
{
NSNumber *num = nil;
if ( fieldEnum == CPTBarPlotFieldBarLocation ) {
// location
if ( [plot.identifier isEqual:@"Bar Plot 2"] ) {
num = [NSDecimalNumber numberWithInt:index];
}
else {
num = [NSDecimalNumber numberWithInt:index];
}
}
else if ( fieldEnum == CPTBarPlotFieldBarTip ) {
// length
if ( [plot.identifier isEqual:@"Bar Plot 2"] ) {
num = [NSDecimalNumber numberWithInt:index];
}
else {
num = [NSDecimalNumber numberWithInt:(index + 1) * (index + 1)];
plot.labelOffset = -1.0;
//-1.0 works well for the first bar, -345.0 works well for the last bar
}
}
else {
// base
if ( [plot.identifier isEqual:@"Bar Plot 2"] ) {
num = [NSDecimalNumber numberWithInt:0];
}
else {
num = [NSDecimalNumber numberWithInt:index];
}
}
return num;
}
-1.0 works well for the first bar (height of 1 unit), -345.0 works well for the last bar (height of 100 units). Sorry I led you in the wrong direction yesterday and that I don't have enough time to help you come up with a good algorithm, but hopefully that helps point you in the right direction.