gpt4 book ai didi

swift - Swift 中的多个动画过渡

转载 作者:行者123 更新时间:2023-11-28 15:44:53 25 4
gpt4 key购买 nike

我有一个包含 UIImageView 的嵌套 UIStackView。我希望每个 UIImageView 翻转以逐渐显示一个大的 UIImageView。我的代码显示单一 View ,但没有动画……它只是立即显示。我想不通为什么没有几秒钟的级联效果。

newImage 是全屏图像。

imageArray 是应该翻转消失的较小图像的随机数组。

private func flipImage(newImage: UIImage, imageArray: [UIImageView]) {
let randomImage = imageArray.first!
let absCoordinates = randomImage.convert(self.view.frame, to: super.view)
let absFrame = CGRect(x: absCoordinates.origin.x, y: absCoordinates.origin.y, width: randomImage.frame.width, height: randomImage.frame.height)
if let croppedImage = newImage.cgImage?.cropping(to: absFrame) {
let croppedImageView = UIImageView(frame: absFrame)
croppedImageView.image = UIImage(cgImage: croppedImage)
croppedImageView.isHidden = true
self.view.addSubview(croppedImageView)

let transitionOptions: UIViewAnimationOptions = [.transitionFlipFromTop, .showHideTransitionViews]
UIView.transition(with: croppedImageView, duration: 1, options: transitionOptions, animations: {
croppedImageView.isHidden = false
if imageArray.count > 1 {
var newArr = imageArray
newArr.removeFirst()
self.flipImage(newImage: newImage, imageArray: newArr)
}
})
}
}

最佳答案

我想你想调用你的

self.flipImage(newImage: newImage, imageArray: newArr)

在完成过渡时是这样的:

UIView.transition(with: croppedImageView, duration: 1, options: transitionOptions, 
animations: {
croppedImageView.isHidden = false
}, completion { _ in
if imageArray.count > 1 {
var newArr = imageArray
newArr.removeFirst()
self.flipImage(newImage: newImage, imageArray: newArr)
}
}
)

这将在第一个图像完成后翻转下一个图像。

如果您不想等到转换完成,您可以在调用下一个图像翻转之前添加延迟:

UIView.transition(with: croppedImageView, duration: 1, options: transitionOptions, 
animations: {
croppedImageView.isHidden = false
if imageArray.count > 1 {
var newArr = imageArray
newArr.removeFirst()
self.perform(#selector(self.flip(_:)), with: [newImage, newArr], afterDelay: 0.5)
}
}
)

func flip(_ data: Array<Any>) {
self.flipImage(newImage: data[0], imageArray: data[1]) // This will probably give some errors and needs some "as! Something"
}

关于swift - Swift 中的多个动画过渡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43269058/

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