【发布时间】:2020-06-19 04:40:34
【问题描述】:
我试图在单击按钮时添加 1000 个 UI 标签,但我循环了 1000 次并创建了 1000 个 UI 标签
@IBAction func display(_ sender: Any) {
for i in Range(1...1000) {
let label = self.displayLabel(str: "test \(i)",i: i)
)
UIView.animate(withDuration: 2.0, delay: 1.0, options: UIView.AnimationOptions.transitionCrossDissolve,animations: {
self.view.addSubview(label)
label.alpha = 1.0;
label.center.y = self.view.center.y/3},
completion: { (value) in label.removeFromSuperview()} )
}
}
而displayLabel函数是
func displayLabel(str:String,i:Int) -> UILabel {
let label = UILabel.init(frame: CGRect(x: 0, y: 0, width: 200, height: 21))
label.tag = i
label.font = UIFont.preferredFont(forTextStyle: .footnote)
let screenWidth = self.view.frame.size.width
let screenHeight = self.view.frame.size.height
label.textColor = .black
label.center = CGPoint(x: screenWidth * 0.75, y: screenHeight - (screenHeight/3.0))
label.textAlignment = .center
label.text = str
label.backgroundColor = .white
label.backgroundColor?.withAlphaComponent(0.5)
return label
}
会发生什么?
屏幕一个接一个地显示标签,然后向上移动并消失。
实际发生的事情
同时添加所有标签,然后它们开始制作动画,使编号为 1000 的标签动画并消失。
你认为为什么会发生这种情况?
这是因为标签的原因还是为什么它等待所有1000个标签并将其添加到子视图中?
我怎样才能达到我想要的?
【问题讨论】:
标签: ios swift addsubview ios-animations