J'ai créé un 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> 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.
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 Réponses :
Si la table est dans la TableView ou Collectionview Ensuite, vous devrez mettre en œuvre votre connexion dans CellWilldisplay. P>
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.
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
}
}
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. P> blockQuote>
xxx pré> p>
Pouvez-vous poster le code?
Votre étiquette est-elle dans un
utableview code> ou
uicollectionview code>?
L'étiquette est juste en vue de la vue de la vue. Utiliser Autolayout dans Storyboard.