0
votes

Uilabel change de couleur arrière sur l'orientation de périphérique changeante

J'ai créé un uiviewcontroller code> dans Storyboard. Il y a un Uilabel code> rouge coloré. Après une activité, je change de texte sur l'étiquette et c'est textcolor code> au vert.

La chose étrange est la suivante: quand je modifie le périphérique d'orientation de l'étiquette de l'étiquette d'orientation code> retourne en rouge comme il se trouvait au début, mais le texte reste. P>

Comment puis-je faire ça TextColor code> sur l'étiquette reste vert après la rotation de l'appareil? p>

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 commentaires

Pouvez-vous poster le code?


Votre étiquette est-elle dans un utableview ou uicollectionview ?


L'étiquette est juste en vue de la vue de la vue. Utiliser Autolayout dans Storyboard.


3 Réponses :


0
votes

Si la table est dans la TableView ou Collectionview Ensuite, vous devrez mettre en œuvre votre connexion dans CellWilldisplay.


2 commentaires

C'est juste une étiquette dans ViewController. Rien d'extraordinaire


J'ai ajouté le code. Ce qui se passe que le nouveau contrôleur s'ouvre là-bas, j'insère des données dans Textfield, puis via le délégué, elle revient et passe dans le nom du bouton et modifie sa couleur et une autre couleur cllabel au vert. Ensuite, je tourne iPad et la couleur est de retour en rouge.



1
votes

Vous pouvez vérifier après avoir appelé le self.view.layoutifned () em> après avoir changé votre couleur d'étiquette. Si ce n'est pas fonctionner, utilisez le code suivant, changez à nouveau la couleur de l'étiquette de manière programmatique lorsque votre orientation change.

p>

    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 commentaires

0
votes

Implémentez la méthode ViewDidLayOutouSubviews. ViewDidLayouTouSubs s'appellera

Lorsque les limites changent pour la vue du contrôleur d'affichage, la vue s'ajuste Les positions de ses sous-visions et le système appelle ensuite cette méthode. xxx


0 commentaires