【问题标题】:Title in UIButton with Image带有图像的 UIButton 中的标题
【发布时间】:2013-02-20 16:42:13
【问题描述】:

我在UIButton 中设置了一张图片,但我需要在这张图片上方设置标题。我该怎么做?

[button setImage:[UIImage imageNamed:@"btn_select_s.png"] forState:0];
[button setImage:[UIImage imageNamed:@"btn_select_p.png"] forState:1];
[button setTitle:@"my title" forState:0];

【问题讨论】:

标签: objective-c cocoa-touch


【解决方案1】:

您可以使用 UIButton 的 titleEdgeInsets 和 imageEdgeInsets 来根据需要定位标题和图像。

See Apple's UIButton reference documentation

例如,在 UIButton 子类中:

[self setImageEdgeInsets:UIEdgeInsetsMake(imageFrame.origin.y, imageFrame.origin.x, 0, 0)];
[self setTitleEdgeInsets:UIEdgeInsetsMake(labelFrame.origin.y, labelFrame.origin.x, 0, 0)];

【讨论】:

    【解决方案2】:

    您需要设置按钮的背景图片:

    [button setBackgroundImage:[UIImage imageNamed:@"foo"] forState:UIControlStateNormal];
    

    【讨论】:

      【解决方案3】:
      [button setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
      [button setContentVerticalAlignment:UIControlContentVerticalAlignmentTop];
      
      //Use you values for edge insets here.
      [button setTitleEdgeInsets:UIEdgeInsetsMake(20.0f, 10.0f, 0.0f, 0.0f)];
      

      【讨论】:

        【解决方案4】:

        这里有一个方便的 UIButton 子类:
        https://github.com/lionhylra/FlexButton

        它具有以下功能: - 它提供了 4 种布局样式。
        - 它就像 UIButton 一样简单。
        - 当您调整按钮的大小时,imageView 和titleLabel 的大小会相应地正确更改。他们不会陷入混乱。这是使用边缘插图的本质区别。
        - TitleLabel 和 imageView 将始终垂直和水平居中。

        【讨论】:

        • 您的回答仅提供了 Swift 中的示例。该问题专门用Objective-C标记。考虑使用基于 Objective-C 的答案发布您的示例。
        猜你喜欢
        • 1970-01-01
        • 2012-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多