我正在使用带有常规x常规变化的属性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视频以了解更多信息。
在iOS 12上,文本根本无法在代码中更改。如果我删除了Variation,那么一切正常。
发生这种情况是因为当应用程序进入后台时,特征集发生了变化,并且使标签文本依赖于垂直和水平大小类之类的特征。
您在情节提要中为不同大小级别定义了两个文本,并且在加载视图后更新了一次文本,但是应用程序会对更改做出反应,就像使用大小级别时所期望的那样。
这就是为什么每次更改traits集合时应用程序都会重新加载文本的原因。
您应该重写方法traitCollectionDidChange(_:)
,并根据实际的特征集合在此处更新文本。