I was having this same probably with the Parse table view. You're absolutely right about how parse collection and table views set their dimensions. The problem can be solved by saving the width and height of the image when you upload it. This way, you can just grab the dimensions of the image before the PFFile image has finished downloading (this usually happens after the collection view is set up).
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
MyParseImage *image = [self.objects objectAtIndex:indexPath.row];
CGFloat imageHeight = [[image objectForKey:height] floatValue];
CGFloat imageWidth = [[image objectForKey:width] floatValue];
CGFloat ratio = self.view.frame.size.width / imageWidth;
return imageHeight * ratio;
}