我正在尝试在按下另一个按钮后动态地将按钮添加到滚动视图。
我创建了一个自定义UIView,我想将其添加到滚动视图中。
您可以在下面找到我尝试执行此操作的代码:
var buttonY: CGFloat = 0 // our Starting Offset, could be 0
for _ in audioCommentsArray {
UIView.animateWithDuration(0.15, animations: {
let commentView = AudioCommentView(frame: CGRectZero)
commentView.frame = CGRect(x: 0, y: buttonY, width: 75, height: 75)
buttonY = buttonY + 75 // we are going to space these UIButtons 75px apart
commentView.alpha = 1.0
audioCommentsListScrollView.addSubview(commentView)
})
}
我想使用简单的动画添加这些commentView。但是只有最后一个commentView正确添加到scrollView,而上面的视图添加如下:
仅显示commentView的背景,而其他元素不可见。
有没有人知道我可能会缺少什么?使用for循环添加视图应该不复杂,因为我之前已经多次这样做了,但这次我似乎错过了什么?
提前谢谢!
答案 0 :(得分:1)
当您通过循环处理动画时,UIView动画会重叠并相互干扰。相反,你应该链接它们,以便下一个动画不会干扰另一个动画。删除循环。然后在完成处理程序中一个接一个地调用动画。您可以递归调用它以确保每个按钮都是动画的。
var count = 0
func startButtonsAnimation() {
UIView.animateWithDuration(0.15, animations: {
let commentView = AudioCommentView(frame: CGRectZero)
commentView.frame = CGRect(x: 0, y: buttonY, width: 75, height: 75)
buttonY = buttonY + 75 // we are going to space these UIButtons 75px apart
commentView.alpha = 1.0
audioCommentsListScrollView.addSubview(commentView)
}, completion: { (value: Bool) in
if self.count < self.audioCommentsArray.count {
self.count += 1
self.startButtonsAnimation()
}
})