Подход Янга кажется хорошим, но если по какой-то причине вы не хотите изменять размер метки (текст центрируется, текст будет изменен и т. Д.), Вы можете использовать дополнения UIKit в NSString. Конечно, это будет работать только для однострочных меток.
CGSize textSize = [label.text sizeWithFont:label.font];
CGFloat imgX;
CGFloat imgY = label.frame.origin.y - imageView.frame.size.height;
if(label.textAlignment == UITextAlignmentLeft) {
imgX = label.frame.origin.x + textSize.width;
} else if(label.textAlignment == UITextAlignmentCenter) {
imgX = label.frame.origin.x + textSize.width / 2.0;
} else if(label.textAlignment == UITextAlignmentRight) {
// This part really depends on what you want to do in this case
imgX = label.frame.origin.x
+ label.frame.size.width
- textSize.width
- imageView.frame.size.width;
}
imageView.frame = CGRectMake(imgX,
imgY,
imageView.frame.size.width,
imageView.frame.size.height);