gpt4 book ai didi

arrays - 列出一个类的所有元素并将它们存储在一个数组中以一次性设置外观属性

转载 作者:行者123 更新时间:2023-11-28 09:07:48 25 4
gpt4 key购买 nike

有没有一种方法可以列出一个类中的所有元素,将它们存储在一个数组中并设置它们的分组样式属性?例如,我想列出当前类中的所有文本 UITextfields 并设置边框颜色、边框宽度……我在下面找到了非常有用的代码,但是您需要明确地附加数组中的每个元素。

// The extension code 

extension UITextField {
func setPreferences() {
self.layer.cornerRadius = 5
self.layer.borderColor = UIColor.grayColor().CGColor
self.layer.borderWidth = 1
}
}

// The following code in the class

var theTextFields = [UITextField]()

func setColorsAndBorders() {

theTextFields = [tf1, tf2, tf3, tf4] // etc

for item in theTextFields {
item.setPreferences()
}
}

// And the following code in the ViewDidLoad

setColorsAndBorders()

最佳答案

实现此目的的最简单方法,假设您的类是 UIViewController,同时仍然使用您的扩展,如下所示:

func setColorsAndBorders()
{
for control in self.view.subviews
{
if (control is UITextField)
{
let thisControl = control as! UITextField
thisControl.setPreferences()
}
}
}

希望这对您有所帮助。

编辑:如果您以编程方式创建 UITextFields,则另一种方法是使用此扩展:

extension UITextField
{
convenience init(cornerRadius: CGFloat, borderColor: UIColor, borderWidth: CGFloat)
{
self.init()
self.layer.cornerRadius = cornerRadius
self.layer.borderColor = borderColor.CGColor
self.layer.borderWidth = borderWidth
}
}

然后你可以,例如,以这样的方式创建一个文本字段:

private func loadTextFields()
{
let thisField = UITextField(cornerRadius: 5, borderColor: UIColor.grayColor(), borderWidth: 1)
thisField.frame = CGRect(x: 0, y: self.view.frame.height / 2.0, width: self.view.frame.width, height: 40.0)
view.addSubview(thisField)
}

关于arrays - 列出一个类的所有元素并将它们存储在一个数组中以一次性设置外观属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30331850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com