UIView动画在第一次使用Xcode 6.1 swift之后似乎加快了速度
由于某种原因,在我第一次调用一系列动画块后,动画似乎更快,不确定这是错误还是我做错了什么,但我肯定有人会打电话告诉我。。我创建了一个UIView子类来处理这个问题UIView动画在第一次使用Xcode 6.1 swift之后似乎加快了速度,xcode,swift,uiviewanimation,Xcode,Swift,Uiviewanimation,由于某种原因,在我第一次调用一系列动画块后,动画似乎更快,不确定这是错误还是我做错了什么,但我肯定有人会打电话告诉我。。我创建了一个UIView子类来处理这个问题 import UIKit import QuartzCore class GBPopupController: UIView { var originalContainerCenterY = CGFloat() @IBOutlet var continerConstraintCenterY: NSLayoutConstraint
import UIKit
import QuartzCore
class GBPopupController: UIView {
var originalContainerCenterY = CGFloat()
@IBOutlet var continerConstraintCenterY: NSLayoutConstraint!
@IBOutlet var containerConstraintCenterX: NSLayoutConstraint!
var startingCenter = CGPoint()
@IBOutlet var contentView: UIView!
@IBOutlet var button: UIButton!
override func layoutSubviews() {
super.layoutSubviews()
contentView.layer.cornerRadius = 10
button.layer.cornerRadius = 10
}
override func didMoveToSuperview() {
self.beginViewAnimations()
}
func animatePopupIn() {
UIView.animateWithDuration(1.0, delay: 0.0, usingSpringWithDamping: 0.6, initialSpringVelocity: 0.7, options: UIViewAnimationOptions.CurveEaseIn, animations: {
self.contentView.layer.transform = CATransform3DIdentity
}, completion: {finished in
})
}
func beginViewAnimations() {
var transform = CATransform3DIdentity;
transform = CATransform3DMakeTranslation(0, -self.frame.size.height, 0)
self.contentView.layer.transform = transform
UIView.animateWithDuration(0.4, delay: 0.0, options: UIViewAnimationOptions.TransitionCrossDissolve, animations: {
self.backgroundColor = UIColor(white: 0.0, alpha: 0.5)
}, completion: {finished in
self.animatePopupIn()
})
}
func removeViewFromSuperView() {
UIView.animateWithDuration(0.5, delay: 0.0, options: UIViewAnimationOptions.TransitionCrossDissolve, animations: {
var transform = CATransform3DIdentity;
transform = CATransform3DMakeTranslation(0, -self.frame.size.height, 0)
self.contentView.layer.transform = transform
}, completion: {finished in
UIView.animateWithDuration(0.4, delay: 0.0, options: UIViewAnimationOptions.TransitionCrossDissolve, animations: {
self.backgroundColor = UIColor.clearColor()
}, completion: {finished in
self.removeViewAnimation()
})
})
}
func removeViewAnimation() {
self.removeFromSuperview()
}
我的评论太长,所以我在这里回答。我不知道它是否能帮到你,但这是我所做的 我使用自动布局,因此在viewdidload中,尺寸尚未初始化。它们基于600x600大小的屏幕,表示任意宽度、任意高度。在我的案例中,当第一个动作完成后,屏幕大小就会显示出来,就像按下按钮一样 这就是为什么我第一次在第一个动作中调用我的动画,只是为了把我的帧放在好的位置。那么其余的都一样。但它用正确的帧大小和位置初始化了我的视图。在那之后,我没有这个问题,我的动画也很好 就像我第一次调用它两次一样,一次是初始化,一次只是播放动画 我做了一些研究,我发现这可能是与帧不同的层的问题,并且该层使用与您选择的动画不同的动画初始化。这就是为什么我第一次没有同样的动画
希望能对您有所帮助。我可能也有同样的问题。我有一个打开/关闭视图的按钮。我使用UIView.animateWithDuration0.5,animations:{}我不知道为什么,但第一次用这种方法打开视图时,动画是不同的。你找到答案了吗?没有,很遗憾没有找到答案