如何在外观()中更改UIButton titlelabel字体的样式和大小?

时间:2019-07-15 18:37:55

标签: ios swift uibutton uiappearance

我正在使用以下代码,但无法正常工作。谁能帮我解决这个问题?

UIButton.appearance().titleLabel?.font = UIFont(name: "Roboto-Regular", size: 20.0)

4 个答案:

答案 0 :(得分:0)

尝试首先创建按钮的实例:

转到情节提要,然后在用鼠标将您创建的按钮拖动到代码上的同时单击“控制”(在键盘上)。这将创建一条蓝线。

然后它将要求您命名实例,因此,假设您将其命名为btnMyButton: 它应该看起来像这样:

@IBOutlet弱var btnMyButton:UIButton! enter image description here

然后您可以参考它:

btbMyButton.titleLabel?.font = UIFont(名称:“ Roboto-Regular”,大小:20.0)

希望有帮助

答案 1 :(得分:0)

如果要一般设置字体,则可以从UIButton.appearance().titleLabel?.font = UIFont(name: "Roboto-Regular", size: 20.0)的方法didFinishLaunchingWithOptions:中调用代码AppDelegate

答案 2 :(得分:0)

好,请尝试以下操作:

转到AppDelegate并将其粘贴-

    extension UIButton {
    @objc dynamic var titleLabelFont: UIFont! {
        get { return self.titleLabel?.font }
        set { self.titleLabel?.font = newValue }
    }
}


class Theme {

    static func apply() {
        applyToUIButton()
        // ...
    }

    // It can either theme a specific UIButton instance, or defaults to the appearance proxy (prototype object) by default
    static func applyToUIButton(a: UIButton = UIButton.appearance()) {
        a.titleLabelFont = UIFont(name: "Courier", size:20.0)

        // other UIButton customizations
    }
}

然后在此处添加“ Theme.apply()”(仍在AppDelegate中):

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    //UIApplication.shared.statusBarStyle = .lightContent

    Theme.apply() // ADD THIS
    return true
}

我用Courier字体完成了它,对我有用。我认为您需要确保在应用程序中安装了字体。

这是我从以下位置获得的:How to set UIButton font via appearance proxy in iOS 8?

答案 3 :(得分:0)

使用 UIAppearance 设置 UIButton 的字体如下:

label = UILabel.appearance(whenContainedInInstancesOf: [UIButton.self])
label.font = UIFont.systemFont(ofSize: 20)

您可以在 AppDelegate 的方法 application(_:, didFinishLaunchingWithOptions:) 或任何适合为您的应用程序设置主题的地方添加上述代码。

UIViewController.viewDidLoad 中,将按钮实例的 adjustsFontForContentSizeCategorytitleLabel 属性设置为 true。

class ExampleVC: UIViewController

    @IBOutlet weak var btnOkay: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()
        btnOkay.titleLabel?.adjustsFontForContentSizeCategory = true
    }
}