子类化 UIButton 标题字体大小意外更改
Posted
技术标签:
【中文标题】子类化 UIButton 标题字体大小意外更改【英文标题】:Subclassed UIButton title font size changing unexpectedly 【发布时间】:2021-12-25 06:49:32 【问题描述】:我正在使用协议委托来设置 UIButton 的标题。然而,字体大小意外地从 14 变为 17。我尝试将按钮子类化以保持字体大小为 14,但显然出了点问题。有人建议,字体大小可能在某处存在冲突。但是,我找不到任何会产生冲突的代码。
子类按钮:
import UIKit
class typeButton: UIButton
override init(frame: CGRect)
super.init(frame: frame)
titleLabel?.font = UIFont(name: "Helvetica", size: 14)
required init?(coder aDecoder: NSCoder)
super.init(coder: aDecoder)
协议扩展:
extension ObservationDetailViewController: MushroomTypeDelegate
func didSelectMushroom(name: String)
typeButton.setTitle(name, for: .normal)
observation?.type = name
// End of Extension
按钮通过 Storyboard 进行分类。如果我在设置按钮标题typeButton.setTitle(name, for: .normal)
it shows the font at size 14 的行上放置一个断点。然而,当我越过断点时,字体意外地变大了。我可以使用属性文本和 setAttributedTitle 来解决这个问题,但我很好奇为什么要更改字体大小。
Link to GitHub file
【问题讨论】:
【参考方案1】:尝试在init?(coder aDecoder: NSCoder)
中设置字体大小,因为您是从情节提要中对按钮进行分类的:
class TypeButton: UIButton
override init(frame: CGRect)
super.init(frame: frame)
commonInit()
required init?(coder aDecoder: NSCoder)
super.init(coder: aDecoder)
commonInit()
private func commonInit()
titleLabel?.font = UIFont(name: "Helvetica", size: 14)
并确保字体名称正确。
【讨论】:
仍然出现同样的问题;在控制台中打印出字体点大小将显示 14,但在显示之前已更改为 17。我假设我的代码中一定存在一些冲突。以上是关于子类化 UIButton 标题字体大小意外更改的主要内容,如果未能解决你的问题,请参考以下文章
使用自动布局在屏幕更改时调整自定义单元格中的 UIButton 字体