使用 minimumScaleFactor 时 UIButton titleLabel 未垂直居中

Posted

技术标签:

【中文标题】使用 minimumScaleFactor 时 UIButton titleLabel 未垂直居中【英文标题】:UIButton titleLabel not vertically centered when using minimumScaleFactor 【发布时间】:2014-06-30 20:49:19 【问题描述】:

我有一个 UIButton,文本通常在按钮内居中,直到文本字符串变长并开始按比例缩小文本的大小。然后文本似乎粘在 textField 的底部,而不是停留在按钮的中心。

self.titleBtn.titleLabel.adjustsFontSizeToFitWidth = YES;
self.titleBtn.titleLabel.minimumScaleFactor = .2;

[self.descriptionBtn setTitle:@"T" forState:UIControlStateNormal]; 
//works normally

但是

[self.descriptionBtn setTitle:@"This a longer title" forState:UIControlStateNormal];
//is vertically lower than center

【问题讨论】:

【参考方案1】:

如上所述here :) 您需要使用 UILabel 的 baselineAdjustment 属性label.baselineAdjustment = UIBaselineAdjustmentAlignCenters

【讨论】:

【参考方案2】:

斯威夫特 3

label.baselineAdjustment = .alignCenters

对于按钮

button.titleLabel?.baselineAdjustment = .alignCenters

【讨论】:

以上是关于使用 minimumScaleFactor 时 UIButton titleLabel 未垂直居中的主要内容,如果未能解决你的问题,请参考以下文章

UILabel minimumScaleFactor 是如何工作的?

SwiftUI:minimumScaleFactor 没有均匀地应用于堆栈元素

SwiftUI Text.minimumScaleFactor(…)无法正确缩放文本?

具有 minimumscaleFactor 的 SwiftUI 文本始终减少文本

UIlabel的字体自适应属性

删除第一个字符时,SwiftUI TextField 冻结