带有变体的属性UILabel在将应用发送到后台后重置文本

问题描述 投票:0回答:1

我正在使用带有常规x常规变化的属性UILabel。请参见以下屏幕截图:

enter image description here

在我的视图控制器中,我正在为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视频以了解更多信息。

在iOS 12上,文本根本无法在代码中更改。如果我删除了Variation,那么一切正常。

ios swift uilabel attributed
1个回答
0
投票

发生这种情况是因为当应用程序进入后台时,特征集发生了变化,并且使标签文本依赖于垂直和水平大小类之类的特征。

您在情节提要中为不同大小级别定义了两个文本,并且在加载视图后更新了一次文本,但是应用程序会对更改做出反应,就像使用大小级别时所期望的那样。

这就是为什么每次更改traits集合时应用程序都会重新加载文本的原因。

您应该重写方法traitCollectionDidChange(_:),并根据实际的特征集合在此处更新文本。

© www.soinside.com 2019 - 2024. All rights reserved.