我在情节提要中创建了UIViewController
。有UILabel
色为红色。进行一些活动后,我将标签上的文本更改为textColor
变为绿色。
奇怪的是:当我更改设备方向标签时,textColor
像开始时一样变回红色,但是文本仍然保留。
如何旋转设备后标签上的textColor
保持绿色?
class ViewController: UIViewController {
@IBOutlet private weak var volumeButton: UIButton!
@IBOutlet private weak var clLabel: UILabel!
override var traitCollection: UITraitCollection {
if view.bounds.width < view.bounds.height {
let traits = [UITraitCollection(horizontalSizeClass: .compact), UITraitCollection(verticalSizeClass: .regular)]
return UITraitCollection(traitsFrom: traits)
} else {
let traits = [UITraitCollection(horizontalSizeClass: .regular), UITraitCollection(verticalSizeClass: .compact)]
return UITraitCollection(traitsFrom: traits)
}
}
@IBAction private func handleInputVolume(_ sender: UIButton) {
coordinator?.inputData(type: .volume, delegate: self)
}
}
extension ViewController: InputDataReceivable {
func didFinishInput(volume: Double) {
volumeButton.setTitle(volume.formattedString, for: .normal)
volumeButton.setTitleColor(.enabledGreen, for: .normal)
clLabel.textColor = .enabledGreen
}
}
答案 0 :(得分:1)
您可以在更改标签颜色后调用 self.view.layoutIfNeeded()后进行检查。如果不起作用,则使用以下代码,只需在更改方向时以编程方式再次更改标签颜色即可。
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
if(size.width > self.view.frame.size.width){
//Landscape
yourLabel.textColor = UIColor.green
}
else{
//Portrait
yourLabel.textColor = UIColor.green
}
}
答案 1 :(得分:0)
如果表在tableView或collectionView中 然后,您需要在cellWillDisplay中实现登录。
答案 2 :(得分:0)
实施viewDidLayoutSubviews方法。 ViewDidLayoutSubviews将被称为
当视图控制器的视图的边界改变时,视图将调整 子视图的位置,然后系统调用此方法。
override func viewDidLayoutSubviews() {
label.textColor = UIColor.green
}