gpt4 book ai didi

arrays - 如何在 Swift 中创建 UIView 对象的副本,并减小特定标签的字体大小(其中以编程方式创建 View )?

转载 作者:行者123 更新时间:2023-11-30 10:02:00 25 4
gpt4 key购买 nike

我已在 subview 上以编程方式创建了 View 。

    let view1 = UIView(frame: CGRectMake(30, cgfloat  , 270, 120))
view1.backgroundColor = UIColor.whiteColor()
view1.layer.cornerRadius = 40.0


let Attdate: UILabel = UILabel()
Attdate.frame = CGRectMake(15, 10, 100, 25)
Attdate.backgroundColor = UIColor.orangeColor()
Attdate.textColor = UIColor.blackColor()
Attdate.font = UIFont(name: "BebasNeue", size: 106)
Attdate.textAlignment = NSTextAlignment.Left
Attdate.text = AttDate.description
view1.addSubview(Attdate)

我有一个数组作为来自服务器的响应字符串,它为我提供了一个数据数组。我想将这些数据打印到标签中。应根据数组长度动态调用标签。这就是原因,我试图复制 view1(我的 UIView 对象)。我尝试了 nskeyedarchiver(不知道它有什么帮助)。

extension UIView{
{
func copyView() -> AnyObject
{
return NSKeyedUnarchiver.unarchiveObjectWithData(NSKeyedArchiver.archivedDataWithRootObject(self))!
}
}

并声明:

    let view1 = UIView()
let copiedView = view1.copyView() as! UIView
print("CopiedView:\(copiedView)")

但是,运气不好:(另外,我尝试了许多语法来减小特定标签的字体大小,但似乎都不起作用。

请回复。

最佳答案

要减小特定标签的字体大小,有两个选项:

  1. 您可以将字体大小作为初始值设定项的一部分,这样您就可以在每次创建初始值设定项时对其进行设置,如下所示:

.

class CustomView: UIView {
init(fontSizeOfLabel : CGFloat) {
super.init(frame: CGRect(x: 30, y: 20, width: 270, height: 120))
// all your normal code in here

let Attdate: UILabel = UILabel()
Attdate.font = UIFont(name: "BebasNeue", size: fontSizeOfLabel)
}

required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
  1. 或者您可以循环遍历其 subview 并创建它之后对其进行更改:

.

var instance = CustomView()
for subview in instance.subviews {
if var label = subview as? UILabel { //check if it can convert the subview into a UILabel, if it can it is your label
label.font = UIFont(name: "BebasNeue", size: 70)
}
}

我还没有测试第二个解决方案,我已经检查了第一个

关于arrays - 如何在 Swift 中创建 UIView 对象的副本,并减小特定标签的字体大小(其中以编程方式创建 View )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37970554/

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