【问题标题】:UIButton image right side of centered text居中文本右侧的 UIButton 图像
【发布时间】:2014-09-02 05:25:40
【问题描述】:

我正在尝试在文本右侧获取图像(在 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 代码等等。

所以那是行不通的。

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

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

【问题讨论】:

    标签: ios objective-c cocoa-touch uibutton uilabel


    【解决方案1】:
    - (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 具有标识转换,则所有其他代码都将被违反。

    【讨论】:

      【解决方案2】:

      实现这一点的简单方法,

      在 IB 中,在 Attribute Ispector 内,最后一个选项是 “Edge” 从 Edge 的下拉列表中选择 Image 并增加其左值,现在选择标题并将其左值增加为负数。

      它会给你想要的结果。

      【讨论】:

      • 是的,但这仅适用于确切长度的字符串。在翻译中,长度可能会有所不同。
      • 能否根据st字符串的不同-不同长度增加按钮长度。如果是,则在按钮上设置文本后,您必须通过 self.imageEdgeInsets = UIEdgeInsetsMake (0.0, 0.0 , (btSize.width - imageSize.width), 0.0) 更改图像的插图;
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-28
      • 2021-02-17
      • 1970-01-01
      • 2013-11-30
      • 1970-01-01
      • 2018-08-04
      • 1970-01-01
      相关资源
      最近更新 更多