带有变体的属性 UILabel 在应用程序发送到后台后重置文本
Attributed UILabel with Variation resets text after app was sent to background
我使用的是带有 Regular x Regular 变体的属性 UILabel
。请参阅以下屏幕截图:
在我的视图控制器中,我正在为 UILabel
:
设置一个文本值
class ViewController: UIViewController
{
// MARK: - Outlets
@IBOutlet weak var myLabel: UILabel!
// MARK: - Life Cycle
override func viewDidLoad()
{
super.viewDidLoad()
myLabel.text = "THIS IS MY TEXT"
}
}
当我 运行 设备上的应用 (iOS 13) 标签显示正确的文本 ("THIS IS MY TEXT") 时。但是如果我将应用程序发送到后台并再次打开它,标签会将文本重置为 "Label",即我在代码中设置的文本丢失了。请观看 this 视频以获得更好的理解。
On iOS 12 根本无法在代码中更改文本。
如果我删除 Variation,那么一切正常。
发生这种情况是因为当应用程序进入后台时,特征集合正在发生变化,并且您使标签文本依赖于垂直和水平大小等特征 class。
您在情节提要中定义了两个不同大小的文本 classes,并且您在加载视图后更新一次文本,但应用程序对更改的反应与您使用大小时预期的一样 classes.
这就是每次特征集合更改时应用程序重新加载文本的原因。
您应该覆盖视图控制器中的方法 traitCollectionDidChange(_:)
并根据实际特征集合更新那里的文本。
我使用的是带有 Regular x Regular 变体的属性 UILabel
。请参阅以下屏幕截图:
在我的视图控制器中,我正在为 UILabel
:
class ViewController: UIViewController
{
// MARK: - Outlets
@IBOutlet weak var myLabel: UILabel!
// MARK: - Life Cycle
override func viewDidLoad()
{
super.viewDidLoad()
myLabel.text = "THIS IS MY TEXT"
}
}
当我 运行 设备上的应用 (iOS 13) 标签显示正确的文本 ("THIS IS MY TEXT") 时。但是如果我将应用程序发送到后台并再次打开它,标签会将文本重置为 "Label",即我在代码中设置的文本丢失了。请观看 this 视频以获得更好的理解。
On iOS 12 根本无法在代码中更改文本。 如果我删除 Variation,那么一切正常。
发生这种情况是因为当应用程序进入后台时,特征集合正在发生变化,并且您使标签文本依赖于垂直和水平大小等特征 class。
您在情节提要中定义了两个不同大小的文本 classes,并且您在加载视图后更新一次文本,但应用程序对更改的反应与您使用大小时预期的一样 classes.
这就是每次特征集合更改时应用程序重新加载文本的原因。
您应该覆盖视图控制器中的方法 traitCollectionDidChange(_:)
并根据实际特征集合更新那里的文本。