iOS/Swift 4:从以编程方式创建的标签更改颜色

拉夫

我正在根据数组的计数创建多个标签。这很好用。但是在发生一些用户交互之后,我想更改标签颜色。

这是我的代码:

- 数组看起来像这样:

var vids = [5: ["urltovideo1", "locationOne"], 7: ["urltovideo2", "locationTwo"]]

for label in vids[x][1] {
        let label = UILabel()
        label.translatesAutoresizingMaskIntoConstraints = false
        label.backgroundColor = UIColor.gray
        label.text = vids[index[j] as! Int]![2]
        let z = CGFloat(j)
        self.view.addSubview(label)
        let horConstraint = NSLayoutConstraint(item: label, attribute: .centerX, relatedBy: .equal, toItem: view, attribute: .centerX, multiplier: 0.3+z, constant: 0.0)
        let verConstraint = NSLayoutConstraint(item: label, attribute: .centerY, relatedBy: .equal, toItem: view, attribute: .centerY, multiplier: 0.75, constant: 0.0)
        view.addConstraints([horConstraint, verConstraint])
}

- 用户与应用程序交互后,我尝试这样做:

for label in vids[x][1] {
    let label = UILabel()
    label.backgroundColor = UIColor.green
}

……但什么也没发生。

维亚切斯拉夫

如果你这样做:

for label in vids[x][1] {
    let label = UILabel()
    label.backgroundColor = UIColor.green
}

您的标签不会更改。问题在于,let label = UILabel()您只需在线创建一个新的UILabel. 这个标签不是你在 iPhone 屏幕上看到的标签。

可能的解决方案之一

在您的班级中的某个地方创建您在第一个循环中创建的 UILabels 存储。

var vids = [5: ["urltovideo1", "locationOne"], 7: ["urltovideo2", "locationTwo"]]
var labels: [String: UILabel] = [:]

for labelString in vids[x][1] {
        let label = UILabel()
        labels[labelString] = label
        label.translatesAutoresizingMaskIntoConstraints = false
        label.backgroundColor = UIColor.gray
        label.text = vids[index[j] as! Int]![2]
        let z = CGFloat(j)
        self.view.addSubview(label)
        let horConstraint = NSLayoutConstraint(item: label, attribute: .centerX, relatedBy: .equal, toItem: view, attribute: .centerX, multiplier: 0.3+z, constant: 0.0)
        let verConstraint = NSLayoutConstraint(item: label, attribute: .centerY, relatedBy: .equal, toItem: view, attribute: .centerY, multiplier: 0.75, constant: 0.0)
        view.addConstraints([horConstraint, verConstraint])
}

并在以后使用它:

for labelString in vids[x][1] {
    let label = labels[labelString] // < Here you retrieves a saved label
    label.backgroundColor = UIColor.green
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

以编程方式更改img标签的src

以编程方式更改CardView的背景颜色

以编程方式更改可绘制颜色

Android以编程方式更改按钮的文本颜色

以编程方式更改Android EditText的颜色

以编程方式更改ListBox项目背景颜色

以编程方式将TabLayout中的标签文本颜色更改为其他颜色

如何以编程方式更改Tkinter标签的颜色?

以编程方式更改颜色edittext选择句柄

以编程方式更改colorControlActivated颜色

更改已在C#中以编程方式创建的标签的文本?

Angular Material以编程方式更改Tab标签

iOS Swift以编程方式更改标签内的特定文本颜色

如何在可以通过编程方式更改颜色的android中创建圆形窗口小部件?

以编程方式更改开关的颜色

Android以编程方式自动更改文本颜色

SwiftUI以编程方式更改颜色主题

根据背景以编程方式更改波纹颜色

如何以编程方式创建或更改由不同颜色的线条组成的可绘制对象

以编程方式创建标签时如何设置标签文本颜色

以编程方式更改ScrollView的颜色

以编程方式在Excel中更改字体颜色

以编程方式更改MenuItem文本颜色

如何以编程方式更改形状颜色?

如何通过以编程方式创建UIImage来更改UITabBar顶部边框的颜色?

以编程方式更改 supportActionBar 的颜色

以编程方式创建 UIButton 时启用色调颜色更改动画

无法以编程方式快速更改 UIBarItem 的颜色

无法在 iOSSwift 中的自定义集合视图单元格中圆角标签