首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UILabel在改变设备方向上改变颜色

UILabel在改变设备方向上改变颜色
EN

Stack Overflow用户
提问于 2019-07-02 06:05:55
回答 3查看 363关注 0票数 0

我在故事板中创建了一个UIViewController。有一个UILabel色的红色。在一些活动之后,我将标签上的文本更改为textColor,改为绿色。

奇怪的是:当我更改设备方向标签时,它的textColor会像开始时一样变回红色,但是文本会保持不变。

如何在设备旋转后标签上的textColor保持绿色?

代码语言:javascript
复制
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
     }
 }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-07-02 06:53:40

实现viewDidLayoutSubviews方法。ViewDidLayoutSubviews将被调用

当视图控制器的视图的边界发生变化时,视图将调整其子视图的位置,然后系统调用此方法。

代码语言:javascript
复制
override func viewDidLayoutSubviews() {
    label.textColor = UIColor.green
}
票数 2
EN

Stack Overflow用户

发布于 2019-07-02 06:41:42

在更改标签颜色后,您可以在调用self.view.layoutIfNeeded()之后检查它。如果它不起作用,那么使用下面的代码,当您的方向发生变化时,只需以编程方式再次更改标签颜色。

代码语言:javascript
复制
    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
EN

Stack Overflow用户

发布于 2019-07-02 06:30:18

如果表位于tableView或collectionView中,则需要在cellWillDisplay中实现登录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56846255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档