gpt4 book ai didi

ios - 理解[UIView animateWithDuration :completion:]的完成 block

转载 作者:行者123 更新时间:2023-12-01 16:54:09 24 4
gpt4 key购买 nike

我试图理解 UIView animateWithDuration:completion .我想要做的是将一个 UIView 拖到另一个 UIView 中。如果它们相交,则将拖动的 UIView 的 alpha 设置为 0,然后将拖动的 UIView 重置为其原始位置。这个想法是将项目拖放到存储桶中。首先,我只是将 alpha 设置为 0,然后将其重置。这是我用于拖动 View 的平移手势识别器的代码:

else if (gestureRecognizer.state == UIGestureRecognizerStateEnded) {
// Update the description view
if (CGRectIntersectsRect(panViewPiece.frame, _descriptionView.frame)) {
[UIView animateWithDuration:0.25 animations:^{
self.dragDescriptionView.alpha = 0.0;
}completion:^(BOOL finished) {
if (finished) {
panViewPiece.center = _dragDescriptionViewOriginalCenter;
self.dragDescriptionView.alpha = 1.0;
}
}];
[self updateDescriptionView];
}
}

所以我认为完成 block 的工作方式是当第一个 animateWithDuration 完成时,将调用完成 block 。所以我试图在第一部分将 alpha 设置为 0,然后一旦完成,将 panViewPiece 放回其原始位置并将其 alpha 设置为 1。发生在矩形相交后,alpha 变为 0然后回到 1,因为它突然回到原来的中心。我不希望 View 在弹回其原始位置时可见。我是否正确理解了完成 block ?或者这不是它的工作方式?谢谢!

最佳答案

在完成 block 中,您将 dragDescriptionView 的 alpha 设置回 1.0,然后将其设置为 0.0。那是你要的吗?在您的问题中,听起来您希望 panViewPiece 的 alpha 为 1.0,但这不是您的代码所做的。

关于ios - 理解[UIView animateWithDuration :completion:]的完成 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13355671/

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