我试图在文本的右侧获取图像(在IB中构建)。我发现here的一个想法是对UIButton进行子类化并覆盖:
- (CGRect)imageRectForContentRect:(CGRect)contentRect
和
- (CGRect)titleRectForContentRect:(CGRect)contentRect` which I did.
但在该示例中,图像一直被推到按钮的右边缘。我希望它出现在我的居中文本之后。所以,我想,如果我可以使用某种字体获得width of the label,我就可以这样做。
完美无缺。但。如果我在imageRectForContentRect
这样做:
- (CGRect)imageRectForContentRect:(CGRect)contentRect
{
CGSize textSize = [self.titleLabel.text sizeWithAttributes:@{NSFontAttributeName: self.titleLabel.font}];
}
我得到一个无限循环(因为调用self.titleLabel会调用imageRectForContent,它调用textSize代码等等。
所以那不行。
是否有另一种方法可以轻松地将图像放在文本的右侧,并带有居中文本的按钮?
我正在尝试这种方法,因为我想支持多种语言,按钮的文本可能有不同的长度。
答案 0 :(得分:11)
- (void)swapImageText
{
self.transform = CGAffineTransformScale(self.transform, -1.0f, 1.0f);
self.titleLabel.transform = CGAffineTransformScale(self.titleLabel.transform, -1.0f, 1.0f);
self.imageView.transform = CGAffineTransformScale(self.imageView.transform, -1.0f, 1.0f);
}
我的UIButton类别。如果假设任何UIButton具有身份转换,则将违反所有其他代码。
答案 1 :(得分:3)
这样做的一个简单概念,在IB中,在属性Ispector中,最后一个选项是“Edge” 从Edge下拉列表中选择Image并增加其左值,现在选择title并将其左值增加为负值。 现在将得到你的结果。