如何为所有子视图设置文本颜色?

时间:2015-07-09 07:32:46

标签: ios uiview uicolor

例如,我创建了一个var fs = require('fs'); var wavesurfer = Object.create(WaveSurfer); wavesurfer.init({ container: '#wave-area' }); fs.readFile('/path/to/demo.wav', function(err, data) { if (data && !err) { console.log('has data and no error!'); } var file = new window.Blob([data]); wavesurfer.loadBlob(file); } wavesurfer.on('loading', function(e) { console.log('loading', e); }); wavesurfer.on('error', function(err) { console.log(err); }); ,里面有一些UIViewUILabel个子视图。所有子视图都有不同的文本颜色。

是否有简单的方法为所有子视图设置文本颜色并取消它?它应该像面具一样工作吗?

4 个答案:

答案 0 :(得分:4)

对于UIButton,如果它们是默认类型(.RoundedRectType),那么就像将tintColor属性设置为您想要的超级视图那样简单。对于UILabel,遗憾的是,这还不够,但您可以继承UILabel并覆盖-tintColorDidChange方法,如下所示:

// In MyLabelSubclass.m
- (void)tintColorDidChange {
    self.textColor = self.tintColor;
}

// Swift version
override func tintColorDidChange {
    textColor = tintColor
}

有关UILabeltextColor更改后tintColor {{1}}未自动更新{{1}}的原因的详细信息,this answer是对&{ #39; s继续这个技术选择背后的原因。

答案 1 :(得分:1)

您可以在视图的子视图上运行循环

for (UIView *view in yourView.subviews)
{
   if([view isKindOfClass:[UILabel class]] )
    {
      UILabel *label = (UILabel*)view;
      label.textColor = [UIColor greenColor];
    }
  //Similarly you can check and change for UIButton , All UI Elements
}

答案 2 :(得分:0)

您可以使用以下任一方式执行此操作:

  1. UIAppearance中的UILabelUIButtoncheck link中设置AppDelegate。 OR
  2. 创建UILabelUIButton
  3. 的子类

    我更喜欢第一个:

    - (BOOL)application : (UIApplication *)application didFinishLaunchingWithOptions : (NSDictionary *)launchOptions
    {
        //This color will affect every label in your app
         [[UIButton appearance] setTintColor:[UIColor redColor]]; 
        [[UILabel appearance] setTextColor:[UIColor redColor]]; 
        return YES;
    }
    

答案 3 :(得分:0)

您将获得所有子视图,然后根据它们的类型对其进行转换 之后,更改颜色

let subviews = view.subviews
        
        for v in subviews{
            if v is UILabel {
                let currentLabel = v as! UILabel
                currentLabel.textColor = UIColor.white
            } else if v is UIButton {
                let currentButton = v as! UIButton
                currentButton.setTitleColor(UIColor.white, for:.normal)
            }
        }

在这里,我将UIbutton和UILabels的颜色都更改为白色