gpt4 book ai didi

ios - 如何在 iOS 8 中通过外观代理设置 UIButton 字体?

转载 作者:搜寻专家 更新时间:2023-11-01 05:49:09 26 4
gpt4 key购买 nike

我试图通过外观代理设置 UIButton 的字体。但这似乎不起作用。这是我尝试过的。

UIButton.appearance().titleFont = UIFont(名称:FONT_NAME_DEFAULT,大小:20.0)UIButton.appearance().titleLabel?.font = UIFont(名称:FONT_NAME_DEFAULT,大小:20.0)

如何在 iOS 8 中通过外观代理设置 UIButton 字体?

编辑:在 vaberer 的 link 中找到:“令我惊讶的是,UIButton 没有任何 UI_APPEARANCE_SELECTOR 属性,但符合 UIAppearance 协议(protocol)。”

最佳答案

主题应用也有同样的问题。

1。添加此扩展

// UIButton+TitleLabelFont.swift

import UIKit

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

2。然后设置UIButton外观原型(prototype)对象

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: FONT_NAME_DEFAULT, size:20.0)
// other UIButton customizations
}
}

3。将主题设置放在应用程序委托(delegate)中

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
Theme.apply()

// ...

return true
}

如果您较早地预加载内容(lazy var Storyboard中的 VC),最好不要使用应用程序委托(delegate)在覆盖初始化程序中设置主题内容,如下所示:

private var _NSObject__Theme_apply_token: dispatch_once_t = 0

extension NSObject {
override public class func initialize() {
super.initialize()
// see also: https://stackoverflow.com/questions/19176219/why-am-i-getting-deadlock-with-dispatch-once
var shouldRun = false
dispatch_once(&_NSObject__Theme_apply_token) {
shouldRun = true
}
if shouldRun {
Theme.apply()
}
}
}

关于ios - 如何在 iOS 8 中通过外观代理设置 UIButton 字体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29862179/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com