我想在' UILabel'旁边显示图像,但是' UILabel'文字长度可变,因此我不知道放置图像的位置。
图像应根据标签的大小移动。
我该如何做到这一点?
答案 0 :(得分:5)
虽然Keshav的答案可行,但已被弃用
尝试:
NSDictionary *attributes = @{NSFontAttributeName: [UIFont fontWithName:@"HelveticaNeue" size:14]};
CGRect rect = [textToMeasure boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:attributes
context:nil];
然后使用rect的大小来确定您的定位和标签尺寸。
CGRect currentLabelFrame = self.label.frame;
currentLabelFrame.size.width = rect.size.width;
self.label.frame = currentLabelFrame;
答案 1 :(得分:4)
使用自动布局,您可以执行以下操作:
答案 2 :(得分:1)
我有同样的问题,我想在自动布局的故事板中执行此操作,而不是在代码中。所以我制作了以下应用来测试这个概念。
我为"变量文字标签添加了Auto Layout constraints"和图像。我将标签固定在容器的左边缘(但我没有设置宽度的任何约束)。然后我将图像固定在标签的右边缘。 (我还在容器和#34中添加了约束"垂直中心;对于标签和图像都添加了约束。)
当我以编程方式更改标签文本时,图像会自动更改其位置并保留在标签旁边。
这是我使用的简单代码。 (对不起,它在Swift中,而不是客观-C.)
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var myLabel: UILabel!
@IBAction func button(sender: AnyObject) {
myLabel.text = textField.text
}
}
对于其他查看此问题并且不知道如何添加约束的人(不久前就像我一样),here是我的另一个答案。
答案 3 :(得分:0)
您可以使用以下代码:
label.numberOfLines = 0;
CGRect frame = label.frame;
labelSize = [@"message" sizeWithFont:font constrainedToSize:CGSizeMake(frame.size.width, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];
frame.size = labelSize;
label.frame = frame;