【问题标题】:Subclassed UIButton title font size changing unexpectedly子类化 UIButton 标题字体大小意外更改
【发布时间】: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

【问题讨论】:

    标签: swift uibutton subclass


    【解决方案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。我假设我的代码中一定存在一些冲突。
    猜你喜欢
    • 1970-01-01
    • 2019-11-24
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    相关资源
    最近更新 更多