自动缩小的 UIButton 文本之前的换行符

     2023-03-21     156

关键词:

【中文标题】自动缩小的 UIButton 文本之前的换行符【英文标题】:Newline before auto-shrunken UIButton text 【发布时间】:2016-11-29 15:35:13 【问题描述】:

背景

我正在创建一个应用程序,在它的故事板中我有一个UIButton 元素。我需要 UIButton 的文本自动收缩,因为它会根据视图的大小进行缩放。在情节提要中,它具有以下属性:

在我的代码里面,它说:

guard button.titleLabel != nil else 
    throw AutoshrinkError.noTitleLabel(button: button)


button.titleLabel!.adjustsFontSizeToFitWidth = true
button.titleLabel!.numberOfLines = 0
button.titleLabel!.lineBreakMode = NSLineBreakMode.byTruncatingTail
button.titleLabel!.baselineAdjustment = UIBaselineAdjustment.alignBaselines

我知道guard 语句通过(即它下面的代码运行)。

问题

问题是通过上述设置,我的按钮最终看起来像这样:

文本前有一个换行符。

我尝试以多种方式编辑我的代码,包括将button.titleLabel!.numberOfLines 设置为1,将button.titleLabel!.lineBreakMode 设置为NSLineBreakMode.byClipping,或者删除关于button.titleLabel!.baselineAdjustment 的行。这些变化都无济于事。相反,它们最终会导致 更多 问题,例如文本根本没有缩小。

如果有人知道如何防止这种换行场景发生,我将不胜感激。

提前致谢!

编辑 1

UIButton 的约束是:

woodgrain 是用作背景图像的UIImageView

【问题讨论】:

您对该按钮使用的约束是什么?当您使用另一种字体并将 Button 的类型设置为 custom 而不是 system 时,您是否看到同样的错误? @noir_eagle 我编辑了问题以添加约束(请参阅“编辑 1”)。至于UIButtonType,我尝试了.custom.system,结果完全相同。 我无法重现该问题,因此我需要更多信息。你在哪里设置按钮的cornerRadius?那么字体呢,你有没有尝试过使用另一种字体?问题显然不是标签前面的新行,它以某种方式放错了titleLabel,或者拉伸了高度。你试过不使用adjustsFontSizeToFitWidth吗? 【参考方案1】:

我想通了!我所要做的就是添加一个简单的行:

button.titleLabel!.baselineAdjustment = UIBaselineAdjustment.alignCenters

我想到了将baselineAdjustment 由@rintaro 调整为this answer。

现在我的UIButton 看起来像这样:

【讨论】:

如何将自动缩小应用于 UIButton 标题?

】如何将自动缩小应用于UIButton标题?【英文标题】:HowtoapplyautoshrinkingtoUIButtontitle?【发布时间】:2015-10-1615:27:21【问题描述】:想象一下下面的例子:有一个这样的按钮文本以编程方式设置,因为它依赖于计时器。我希望标题... 查看详情

无法让自动换行在 UIButton 上工作

】无法让自动换行在UIButton上工作【英文标题】:can\'tgetwordwraptoworkonUIButton【发布时间】:2013-03-1509:30:32【问题描述】:我有一个简单的UIButton并尝试自动换行,但它总是在一行中显示超出按钮大小的文本。NSString*text=NSLocalizedStri... 查看详情

如何调整 UIButton 的大小以适应文本而不使其比屏幕更宽?

】如何调整UIButton的大小以适应文本而不使其比屏幕更宽?【英文标题】:HowdoIresizeaUIButtontofitthetextwithoutitgoingwiderthanthescreen?【发布时间】:2011-02-1017:16:17【问题描述】:我有一个UIButton,我想调整它的大小以适应其中的任何文... 查看详情

将 UIButton 的 titleLabel 文本与自动布局匹配在固定的恒定宽度上

】将UIButton的titleLabel文本与自动布局匹配在固定的恒定宽度上【英文标题】:FittitleLabeltextofUIButtonwithautolayoutonafixedconstantwidth【发布时间】:2016-04-2106:53:11【问题描述】:大家好,我正在尝试使用自动布局固定宽度常量在UIButton... 查看详情

如何通过 IOS 7 中的文本自动调整 UIButton 的大小?

】如何通过IOS7中的文本自动调整UIButton的大小?【英文标题】:HowtoautoresizeaUIButtonbyitstextinIOS7?【发布时间】:2014-08-1707:11:51【问题描述】:我知道[UIButtonsizeToFit]在IOS6中有效。但在IOS7中无效。所以我想知道如何通过IOS7中的文本... 查看详情

如何正确自动缩放 UIButton 和标题文本?

】如何正确自动缩放UIButton和标题文本?【英文标题】:HowtoautoscaleUIButtonandtitletextcorrectly?【发布时间】:2018-09-2821:59:52【问题描述】:我正在尝试制作带有标题的按钮,这些标题会根据iOS设备(自动缩放)改变标题文本的宽度... 查看详情

使用自动布局创建带有文本和图像的 iOS 7 UIButton

】使用自动布局创建带有文本和图像的iOS7UIButton【英文标题】:CreateiOS7UIButtonWithTextAndImageUsingAutolayout【发布时间】:2014-07-0618:33:56【问题描述】:在目标设备为iOS7iPhone的情况下使用Autolayout和InterfaceBuilder,如何创建三个具有图... 查看详情

UIButton + 斜体字体 = 剪裁

】UIButton+斜体字体=剪裁【英文标题】:UIButton+italicfont=clipping【发布时间】:2011-10-0106:04:48【问题描述】:问题是当我使用像HelveticaOblique这样大小大于13的斜体字体时,UIButton会剪辑标题尾部(最后大约1-2个像素)。有人知道这... 查看详情

beyondcompare工具的设置,beyondcompare工具比较文本时怎么设置自动换行,不喜欢默认的拉动滚动条来看

不能自动换行。对比工具都是按行对齐的,我没见过哪个可以自动换行。可以考虑用其他方式来稍稍改善:▲临时切换到上下布局;▲临时缩小字体(BC的字体菜单还是挺方便的);▲根据需要,放大一边窗格(可以设快捷键)... 查看详情

UIButton 背景图像的大小不适合自动布局?

】UIButton背景图像的大小不适合自动布局?【英文标题】:UIButtonbackgroundimagenotsizingrightwithautolayout?【发布时间】:2014-10-1215:30:36【问题描述】:我只是想为我的用户使用一个登录按钮来填充iPhone屏幕的整个宽度,该按钮基本上是... 查看详情

UIbutton不改变IBAction内的背景

】UIbutton不改变IBAction内的背景【英文标题】:UIbuttondon\'tchangebackgroundinsideIBAction【发布时间】:2013-08-0212:08:44【问题描述】:我有3个带有文本的自定义UIButton,当用户单击其中一个按钮时,我会检查答案是否正确。如果正确,我... 查看详情

UIScrollView 动态内容中的自动布局,底部有 UIButton

】UIScrollView动态内容中的自动布局,底部有UIButton【英文标题】:AutolayoutinUIScrollViewdynamiccontentwithUIButtonatbottom【发布时间】:2015-09-0208:17:52【问题描述】:我必须在我的应用程序中创建一个包含动态内容的表单(它用于Web服务)... 查看详情

如何在 iOS 中平滑放大和缩小 UIButton

】如何在iOS中平滑放大和缩小UIButton【英文标题】:HowtosmoothlyzoominandzoomoutanUIButtoniniOS【发布时间】:2013-07-2919:20:03【问题描述】:我在缩放一个简单的UIButton时遇到了一个大问题。要重现该问题,只需制作一个简单的项目,其中... 查看详情

使用 minimumScaleFactor 时 UIButton titleLabel 未垂直居中

】使用minimumScaleFactor时UIButtontitleLabel未垂直居中【英文标题】:UIButtontitleLabelnotverticallycenteredwhenusingminimumScaleFactor【发布时间】:2014-06-3020:49:19【问题描述】:我有一个UIButton,文本通常在按钮内居中,直到文本字符串变长并开... 查看详情

div在包裹文本时不会缩小

】div在包裹文本时不会缩小【英文标题】:divdoesnotshrinkwhenitwrapsthetext【发布时间】:2019-07-1114:17:16【问题描述】:我正在尝试构建一个包含3个部分的标题栏布局:左:可能包含可截断的长文本的标题center:不应截断但换行的子... 查看详情

canvas文本自动换行

在用canvas中写刮奖结果的时候发现canvas中的文本不会自动折行,要进行截断另起一行来写。在此参考文章html5-canvas的绘制文本自动换行来做改写。根据canvas宽度来做折行在此根据项目的情况让文本占canvas的八分之五,具体可以根... 查看详情

最好的自动换行算法? [关闭]

】最好的自动换行算法?[关闭]【英文标题】:Bestwordwrapalgorithm?[closed]【发布时间】:2010-09-0606:21:36【问题描述】:自动换行是现代文本编辑器的必备功能之一。如何处理自动换行?换行的最佳算法是什么?如果文本有几百万行... 查看详情

解决html5(富文本内容)连续数字字母不自动换行

...组成的长文本,等到展示的时候发现,内容超出了(没有自动换行),另外发现遇到文字就可以换行,如下图所示:  在查资料的过程中发现,不只是数字不会自动换行,还有字母也不会自动换行,造成这种现象的原因是<p&... 查看详情