【问题标题】:iOS / Obj-C: Removing the padding from UIButton titlesiOS / Obj-C:从 UIButton 标题中删除填充
【发布时间】:2012-12-14 20:57:04
【问题描述】:

我正在尝试创建一个非常薄的 UIButton,大小 = CGSizeMake(75, 23) 以完全适合自定义背景图像。我希望按钮有一个标题。

在我调用setTitle:forState: 后,按钮会调整大小以解决标题周围的填充问题,从而破坏背景图像(即导致其平铺非常不合时宜)。我在UILabel 子视图中将标题字体设置为相当小的尺寸,因此导致问题的不是字体而是填充。因此我想删除这个填充。 UIButton 的 contentEdgeInsets、imageEdgeInsets 和 titleEdgeInsets 属性的默认值都是 UIEdgeInsetsZero,所以我假设填充位于 UILabel 子视图中的某个位置。如果是这样,我想我可以通过子类化UILabel 并覆盖textRectForBounds:limitedToNumberOfLines: 来消除它,但我不确定(我很高兴听到有人尝试过这个)。无论如何,我正在寻找更简单的出路。

我找了又找,一无所获。

有什么建议吗?

【问题讨论】:

  • 设置标题后是否尝试设置按钮的边框?
  • 您是否使用 PNG 作为按钮?尝试将标签添加到 PNG 文件本身,然后您可以避免标签导致的任何填充。这当然意味着您失去了动态更改按钮标签的能力。
  • @lnafziger 是的,不幸的是,尝试过没有用。
  • @Jeff Kranenburg,是的,我正在使用 PNG,但我确实需要动态更改标题,所以不幸的是,硬接线不是一种选择。我正在考虑做的是用透明像素放大PNG文件的画布以覆盖填充。当然,这意味着按钮将包含透明像素,这是不可取的,因为这些像素会生成触摸事件。
  • @lnafziger 我想我还应该提到我在设置标题后尝试设置 UILabel 子视图的框架,但再次无济于事。

标签: ios uibutton uilabel padding uiedgeinsets


【解决方案1】:

这样会行。

我以前推荐过这个工具,但它是一个奇迹创造者:-)

OBShapedButton

它将解决您的透明度问题 那应该可以解决您的问题:-)

【讨论】:

  • 谢谢@JeffKranenburg,OBShapedButton 似乎是一个很好的解决方案,它确实解决了透明度问题,但除非我找不到其他解决方案,否则我会推迟实施它,因为可能会有一些性能丢失(在任何给定时间,视图上都会有超过 20 个此按钮的实例)。
  • 我明白你的意思 - 我有一个应用程序,它在开始屏幕上使用了 8 个实例。什么都没注意到。但我猜必须有一些给予和接受。即使您现在实施它,直到找到更好的解决方案。
猜你喜欢
  • 2017-04-16
  • 1970-01-01
  • 1970-01-01
  • 2013-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-30
  • 2019-07-09
相关资源
最近更新 更多