UILabel меняет цвет обратно при изменении ориентации устройства - PullRequest
0 голосов
/ 02 июля 2019

Я создал 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
     }
 }

Ответы [ 3 ]

1 голос
/ 02 июля 2019

Вы можете проверить это после вызова 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
        }
    }
0 голосов
/ 02 июля 2019

Реализация метода viewDidLayoutSubviews. ViewDidLayoutSubviews будет называться

Когда границы изменяются для представления контроллера представления, представление корректирует позиции его подпредставлений, а затем система вызывает этот метод.

override func viewDidLayoutSubviews() {
    label.textColor = UIColor.green
}
0 голосов
/ 02 июля 2019

Если таблица находится в tableView или collectionView Затем вам нужно будет ввести свой логин в cellWillDisplay.

...