本地化 UIButton 时字体发生变化 Xcode
Font changes when localizing UIButton Xcode
当我尝试本地化 UI 按钮时,字体发生了变化。本地化本身有效;我可以看到语言在变化,但字体也在变化 我尝试使用基本国际化、本地化字符串和不同的 pods 进行本地化,但字体仍然在变化。我使用界面构建器创建了 UIButtons 并在界面构建器中设置了字体,还尝试以编程方式创建 UIButton 但字体仍然发生变化。它只针对 UIButtons 发生变化,我对 UILabels 或 UITexfields 没有这个问题。
这是 UI按钮在本地化之前的样子:
Button1
UI按钮在本地化后的样子:
Button1
这是我用来设置按钮并以编程方式对其进行本地化的代码:
@IBOutlet weak var button1: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
button1.titleLabel?.font = UIFont(name: "Helvetica Bold", size: 20)
button1.setAttributedTitle(NSAttributedString(string: NSLocalizedString("button1", comment: "")), for: .normal)
}
为了使用界面生成器进行本地化,我使用了一个 pod,您可以在其中为 UI 元素提供本地化键,但同样的问题出现了。
UIButton
对象可以通过两种主要方式配置:
- 传统上,通过直接在按钮及其标签上设置属性(如您在上面的代码中所做的那样),或者
- 从 iOS 15 开始,通过
UIButton.configuration
一次设置多个属性
虽然这似乎没有被过度清楚地记录下来,但是当您在按钮上设置 configuration
时,这些属性会覆盖您可能分配给按钮属性的任何内容。对于为 iOS 15+ 创建的 iOS 项目,故事板中创建的按钮默认设置为在属性检查器中使用按钮配置:Plain、Filled、Gray 和 Tinted“样式”提供的选项对应于静态 plain()
、filled()
、gray()
和 tinted()
默认按钮配置 offered by UIButton.Configuration
.
当在故事板的 UIButton
上设置其中一种样式时,您尝试在代码中设置的属性将被其配置覆盖。您有两个主要选择:
- 在情节提要中将按钮样式设置为默认,这样可以避免对按钮应用配置,并允许您使用传统属性来设置按钮样式,或者
- 改为使用其配置设置按钮样式
对于目标 iOS 低于 iOS 15 的版本的应用程序,(1) 是唯一的选项(无论如何应该是情节提要中的默认选项);但如果您选择使用 (2),则等效配置可能类似于:
var attributes = AttributeContainer()
attributes.font = UIFont(name: "Helvetica Bold", size: 20)
let title = AttributedString(NSLocalizedString("button1", comment: ""), attributes: attributes)
button1.configuration.attributedTitle = title
当我尝试本地化 UI 按钮时,字体发生了变化。本地化本身有效;我可以看到语言在变化,但字体也在变化 我尝试使用基本国际化、本地化字符串和不同的 pods 进行本地化,但字体仍然在变化。我使用界面构建器创建了 UIButtons 并在界面构建器中设置了字体,还尝试以编程方式创建 UIButton 但字体仍然发生变化。它只针对 UIButtons 发生变化,我对 UILabels 或 UITexfields 没有这个问题。
这是 UI按钮在本地化之前的样子:
Button1
UI按钮在本地化后的样子:
Button1
这是我用来设置按钮并以编程方式对其进行本地化的代码:
@IBOutlet weak var button1: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
button1.titleLabel?.font = UIFont(name: "Helvetica Bold", size: 20)
button1.setAttributedTitle(NSAttributedString(string: NSLocalizedString("button1", comment: "")), for: .normal)
}
为了使用界面生成器进行本地化,我使用了一个 pod,您可以在其中为 UI 元素提供本地化键,但同样的问题出现了。
UIButton
对象可以通过两种主要方式配置:
- 传统上,通过直接在按钮及其标签上设置属性(如您在上面的代码中所做的那样),或者
- 从 iOS 15 开始,通过
UIButton.configuration
一次设置多个属性
虽然这似乎没有被过度清楚地记录下来,但是当您在按钮上设置 configuration
时,这些属性会覆盖您可能分配给按钮属性的任何内容。对于为 iOS 15+ 创建的 iOS 项目,故事板中创建的按钮默认设置为在属性检查器中使用按钮配置:Plain、Filled、Gray 和 Tinted“样式”提供的选项对应于静态 plain()
、filled()
、gray()
和 tinted()
默认按钮配置 offered by UIButton.Configuration
.
当在故事板的 UIButton
上设置其中一种样式时,您尝试在代码中设置的属性将被其配置覆盖。您有两个主要选择:
- 在情节提要中将按钮样式设置为默认,这样可以避免对按钮应用配置,并允许您使用传统属性来设置按钮样式,或者
- 改为使用其配置设置按钮样式
对于目标 iOS 低于 iOS 15 的版本的应用程序,(1) 是唯一的选项(无论如何应该是情节提要中的默认选项);但如果您选择使用 (2),则等效配置可能类似于:
var attributes = AttributeContainer()
attributes.font = UIFont(name: "Helvetica Bold", size: 20)
let title = AttributedString(NSLocalizedString("button1", comment: ""), attributes: attributes)
button1.configuration.attributedTitle = title