我有以下代码…

UILabel *buttonLabel = [[UILabel alloc] initWithFrame:targetButton.bounds];
buttonLabel.text = @"Long text string";
[targetButton addSubview:buttonLabel];
[targetButton bringSubviewToFront:buttonLabel];

...这个想法是,我可以有多行文本的按钮,但文本总是被UIButton的backgroundImage掩盖。显示按钮子视图的日志调用显示UILabel已添加,但文本本身无法看到。这是UIButton的bug还是我做错了什么?


当前回答

这里的答案告诉你如何实现多行按钮标题编程。

我只是想添加,如果你正在使用故事板,你可以输入[Ctrl+Enter]强制在按钮标题字段换行。

HTH

其他回答

在Xcode 9.3中,你可以像下面这样使用storyboard,

你需要设置按钮标题textAlignment到中心

button.titleLabel ?。textAlignment = .center

你不需要像下面这样用新行(\n)设置标题文本,

巴顿。setTitle(“祝\ nAnswer”,为:正常的。)

简单设置标题,

按钮。setTitle(“好答案”,为:.normal)

这是结果,

我把jessecurry的答案整合到stabuton中,这是我的stacontrol开源库的一部分。我目前正在开发的一个应用程序中使用它,它可以满足我的需求。欢迎就如何改进它或发送我拉请求开放问题。

对于那些使用Xcode 4的故事板的人,你可以点击按钮,在右边的属性检查器下的实用工具窗格,你会看到一个换行选项。选择“换行”,应该就可以了。

Swift 5,用于UIButton中的多行文本

  let button = UIButton()
  button.titleLabel?.lineBreakMode = .byWordWrapping
  button.titleLabel?.textAlignment = .center
  button.titleLabel?.numberOfLines = 0 // for Multi line text

在2021年的iOS 15中,苹果首次通过UIButton正式支持多行UIButton。配置API。

UIButton。配置 一种配置,用于指定按钮及其内容的外观和行为。

这个新的API在什么是新的UIKit以及会话中进行了探索:

满足UIKit按钮系统 每个应用程序都使用按钮。在iOS 15中,你可以采用更新的样式来创建华丽的按钮,轻松融入你的界面。我们将探索使创建不同类型的按钮更容易的功能,学习如何提供更丰富的交互,并发现如何在使用Mac Catalyst时获得出色的按钮。 https://developer.apple.com/videos/play/wwdc2021/10064/