代码之家  ›  专栏  ›  技术社区  ›  Niraj Paul

如何从SuperView获取所有元素(如:uiLabel、uiTextField),并设置标签文本颜色和文本字段占位符颜色

  •  0
  • Niraj Paul  · 技术社区  · 6 年前

    我无法设置uitextfield占位符颜色和uilabel文本颜色

    enter image description here

    1. 我们可以在给定的屏幕上看到我需要什么。

    这是我用来标识uilabel和uitextfield的代码。

    func processSubviewsNight(of view: UIView) {
    
            for subview in view.subviews {
    
                if subview is UITextField {
                    if let textField : UITextField = subview as? UITextField {
                        textField.setValue(UIColor.white, forKeyPath: "_placeholderLabel.textColor")
                          textField.backgroundColor = UIColor.appBlueColor()
                    }
                }
    
                if subview is UILabel {
                    if let label : UILabel = subview as? UILabel {
                        label.textColor = UIColor.white
                    }
                }
    
                if subview is UIButton {
                    if let button : UIButton = subview as? UIButton {
                        button.backgroundColor = UIColor.red
                    }
                }
                      processSubviewsNight(of: subview)
               }
        }
    
    1. 问题是,uitextfield占位符和uibutton文本进入uilabel循环,并更改uitextfield占位符颜色与uilabel文本颜色相同
    2 回复  |  直到 6 年前
        1
  •  1
  •   RajeshKumar R    6 年前

    你应该打电话 processSubviewsNight(of: subview) 在其他条件下。否则,textfield的子视图将传递给此方法。

    func processSubviewsNight(of view: UIView) {
    
            for view in self.view.subviews {
                if let lbl = view as? UILabel {
                    label.textColor = UIColor.white
                } else if let textField = view as? UITextField {
                    textField.setValue(UIColor.white, forKeyPath: "_placeholderLabel.textColor")
                    textField.backgroundColor = UIColor.appBlueColor()
                } else if let button = view as? UIButton {
                    button.backgroundColor = UIColor.red
                } else{
                    processSubviewsNight(of: view)
                }
            }
    
        }
    
        2
  •  1
  •   Mahendra    6 年前

    您需要遍历所有子视图并检查相应的类型以更改其属性。

    for subview in view.subviews {
    
            if let textField = subview as? UITextFiled {
    
                textFiled.setValue(UIColor.white, forKeyPath: "_placeholderLabel.textColor")
                textField.backgroundColor = UIColor.appBlueColor()
                //set properties
    
            } else if let button = subview as? UIButton {
    
                button.backgroundColor = UIColor.red
                //set properties
    
            } else if let label = subview as? UILabel {
    
                label.textColor = UIColor.white
                //set properties
            }
        }