UIButton图像右侧居中文本

Mat*_*ijn 1 cocoa-touch objective-c uibutton uilabel ios

我正试图在文本的右侧获取图像(在IB中构建).我在这里找到的一个想法是将UIButton子类化并覆盖:

- (CGRect)imageRectForContentRect:(CGRect)contentRect
Run Code Online (Sandbox Code Playgroud)

- (CGRect)titleRectForContentRect:(CGRect)contentRect` which I did.
Run Code Online (Sandbox Code Playgroud)

但在该示例中,图像一直被推到按钮的右边缘.我希望它出现在我的居中文本之后.所以,我想,如果我能用某种字体获得标签宽度,我可以这样做.

哪个效果很好.但.如果我这样做imageRectForContentRect:

- (CGRect)imageRectForContentRect:(CGRect)contentRect
{
    CGSize textSize = [self.titleLabel.text sizeWithAttributes:@{NSFontAttributeName: self.titleLabel.font}];
}
Run Code Online (Sandbox Code Playgroud)

我得到一个无限循环(因为调用self.titleLabel调用imageRectForContent,它调用textSize代码等等.

所以那不行.

是否有另一种方法可以轻松地使用带有居中文本的按钮将文本放在文本的右侧?

我正在尝试这种方法,因为我想支持多种语言,按钮的文本可能有不同的长度.

use*_*346 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);
}
Run Code Online (Sandbox Code Playgroud)

我的UIButton类别.如果假定任何UIButton具有身份变换,则将违反所有其他代码.