Although the tableview and tableViewCell are probably one of the first you will learn when starting the iPhone SDK. Most of the time, you will just mangle it using some of the more popular and easy way to populate the cell.
For me, I found using this way works out best for me.
Create all the necessary labels in init. For each labels, create a function to return CGRect that describe the actual position and layout.
CGSize ratingSize = [rating.text sizeWithFont:[UIFont boldSystemFontOfSize:24.0]];
self.contentView.bounds.size.width
Use the bounds sizes and get the label CGSize to determine required space for the label.
In your layoutSubViews, [sizeLabel setFrame:[self sizeLabelFrame]];
Now, you can put labels exactly where you want it in your TableCell. This should work for other views too.
PS. This will be important when you port your iPhone app to iPad should you need shouldAutoRotate.

