自动缩小的 UIButton 文本之前的换行符
Posted
技术标签:
【中文标题】自动缩小的 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 的大小以适应文本而不使其比屏幕更宽?
beyond compare工具的设置,beyond compare工具比较文本时怎么设置自动换行,不喜欢默认的拉动滚动条来看