例如,我创建了一个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);
});
,里面有一些UIView
和UILabel
个子视图。所有子视图都有不同的文本颜色。
是否有简单的方法为所有子视图设置文本颜色并取消它?它应该像面具一样工作吗?
答案 0 :(得分:4)
对于UIButton
,如果它们是默认类型(.RoundedRectType),那么就像将tintColor
属性设置为您想要的超级视图那样简单} STRONG>。对于UILabel
,遗憾的是,这还不够,但您可以继承UILabel
并覆盖-tintColorDidChange
方法,如下所示:
// In MyLabelSubclass.m
- (void)tintColorDidChange {
self.textColor = self.tintColor;
}
// Swift version
override func tintColorDidChange {
textColor = tintColor
}
有关UILabel
在textColor
更改后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)
您可以使用以下任一方式执行此操作:
UIAppearance
中的UILabel
和UIButton
班check link中设置AppDelegate
。 OR UILabel
和UIButton
。我更喜欢第一个:
- (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的颜色都更改为白色