gpt4 book ai didi

ios - 帧突然改变而不是动画 [iOS]

转载 作者:搜寻专家 更新时间:2023-10-30 22:03:22 25 4
gpt4 key购买 nike

我的应用程序中有一个带有 ScrollView 的 View (百分比计算器)。我正在尝试为 View 设置动画以使其飞出,然后按下按钮再次从左侧飞入,尽管内容不同。这是我的代码:

func next()
{
UIView.animateWithDuration(0.5, animations: {
self.mainView.frame = CGRectMake(-500, self.view.bounds.height/2-self.mainHeight/2, self.mainWidth, self.mainHeight)
self.mainView.center.x -= 600
}) { (success) in
self.mainView.center.x += 1200
}

UIView.animateWithDuration(0.5, animations: {
self.mainView.frame = CGRectMake(self.view.bounds.width/2-self.mainWidth/2, self.view.bounds.height/2-self.mainHeight/2, self.mainWidth, self.mainHeight)
}) { (success) in
print("Animation Successful!")
self.drawView()
}
}

我不明白为什么,但动画没有发生, View 完全消失,我在日志中看到 “Animation Successful”。明确地说,我以编程方式创建了 View 。

这是 viewDidLoad() 中的代码; View 在调用时正确显示:

    mainHeight = self.view.bounds.height * 0.85
mainWidth = self.view.bounds.width * 0.85
let viewHeight = self.view.bounds.height
let viewWidth = self.view.bounds.width

mainView.frame = CGRectMake(viewWidth/2-mainWidth/2, viewHeight/2-mainHeight/2, mainWidth, mainHeight)
mainView.layer.cornerRadius = 8
mainView.layer.masksToBounds = true
mainView.backgroundColor = getColor(0, green: 179, blue: 164)
self.view.addSubview(mainView)

scrollView.frame = CGRectMake(0, 0, mainWidth, mainHeight)
scrollView.contentSize = CGSizeMake(mainWidth, 800)
self.mainView.addSubview(scrollView)

contentView.frame = CGRectMake(0, 0, mainWidth, 800);
contentView.backgroundColor = getColor(0, green: 179, blue: 164)
contentView.layer.masksToBounds = true
contentView.clipsToBounds = true
self.scrollView.addSubview(contentView)

最佳答案

在框架/中心更改之前放置 self.layoutViewIfNeeded()。此外,您可能需要将下一个动画放在下一个动画的完成处理程序中。

func next() {
UIView.animateWithDuration(0.5, animations: {
self.view.layoutIfNeeded() // add this
self.mainView.frame = CGRectMake(-500, self.view.bounds.height/2-self.mainHeight/2, self.mainWidth, self.mainHeight)
self.mainView.center.x -= 600

}) { (success) in
self.view.layoutIfNeeded() // add this
self.mainView.center.x += 1200

// your next animation within a completion handler of previous animation
UIView.animateWithDuration(0.5, animations: {

self.mainView.frame = CGRectMake(self.view.bounds.width/2-self.mainWidth/2, self.view.bounds.height/2-self.mainHeight/2, self.mainWidth, self.mainHeight)

}) { (success) in

print("Animation Successful!")
self.drawView()
}
}
}

我还没有测试过,也许需要一些更改或行排序。

关于ios - 帧突然改变而不是动画 [iOS],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39684916/

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