What you are asking for is a way to measure text. The iPhone SDK documents a way to find out how big a body of text is, but not how much text fits in a given space. You can use the former to do the latter iteratively.
Look in UIStringDrawing.h for the following method:
- (CGSize)sizeWithFont:(UIFont *)font forWidth:(CGFloat)width lineBreakMode:(UILineBreakMode)lineBreakMode;
Use this method to do a (preferably binary) search on different length substrings of your string until you find a substring that fits a particular height. You have now figured out how much text the first UILabel can display. Repeat for each column.
You could also use CTTypesetter in CoreText, but that is 3.2 forward.