【问题标题】:UIButton with title and image centered标题和图像居中的 UIButton
【发布时间】:2012-06-17 20:30:39
【问题描述】:

我想要一个带有图像标题的 UIButton。我使用-setTitleEdgeInsets 显示文本。

但我不想通过反复试验来获得正确的位置,因为按钮的标题应该是动态的。我尝试确定 UIButtons titleLabel 对象的大小和位置,并使用以下代码设置与其对应的 titleEdgeInsets:

[myButton setTitleEdgeInsets:UIEdgeInsetsMake(myButton.center.y - (myButton.titleLabel.bounds.size.height / 2),
                             - (myButton.center.x - (myButton.titleLabel.bounds.size.width / 2)),
                             myButton.center.y + (myButton.titleLabel.bounds.size.height / 2),
                             myButton.center.x + (myButton.titleLabel.bounds.size.width / 2))];

我在这里遗漏或误用了什么吗?

在此先感谢您-朱利安

【问题讨论】:

    标签: uiimageview uibutton uilabel title


    【解决方案1】:

    按钮在管理标签和图像子视图的方式上可能会有点麻烦——它不会给你太多控制权。这是因为它们会在按钮状态更改(甚至更频繁)时更新这些值,因此如果您手动设置了参数,您的设置就会丢失。这就是为什么您需要使用setTitleEdgeInsets: 之类的方法的原因——您走在正确的轨道上。 :)

    注意事项:

    • 您对myButton.center 的使用可能不正确。这将是您的按钮在其父视图中的中心,您可能希望在此处使用按钮大小的一半。
    • 可能是这样的情况,当您的代码被调用时,按钮尚未完成其子视图布局,因此尚未为 titleLabel 设置框架/边界。

    您可以在按钮上调用layoutSubviews,和/或在标签上调用sizeToFit。但是,您确实受制于 UIButton 的不透明实现细节,因此最好计算您认为的文本/标签大小(使用 NSString 中的 sizeWithFont:* 方法之一)并设置一个顶部和左侧边缘插入来定位文本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      • 1970-01-01
      • 1970-01-01
      • 2014-09-02
      相关资源
      最近更新 更多