gpt4 book ai didi

ios - UIView的animateWithDuration延迟不延迟动画

转载 作者:技术小花猫 更新时间:2023-10-29 10:43:24 25 4
gpt4 key购买 nike

我正在尝试在发生翻转动画的标签上执行动画,完成后经过一段延迟后,标签的文本会发生变化。

延迟似乎永远不会发生。尽管我在完成 block 中使用 UIView animateWithDuration:0.5 delay:4.0,但文本在翻转完成后立即更改。相反,如果我在 completion block(注释语句)中执行带有延迟的 performSelector,它会按预期工作。知道为什么延迟值被忽略了吗?

- (void) flipShapeWithText:(NSString *)text {

[UIView transitionWithView:someLabel duration:0.15 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{
someLabel.text = text;
}completion:^ (BOOL finished){
// [self performSelector:@selector(updateLabelText:) withObject: @"New Text" afterDelay:4.0];
[UIView animateWithDuration:0.5
delay:4.0
options: UIViewAnimationOptionTransitionCrossDissolve
animations:^{
currentShapeNameLabel.text = @"New Text" ;}
completion:nil];
}];
}

最佳答案

animateWithDuration:delay:options:animations:completiondelay 参数指定动画发生前的延迟。您正在动画 block 中设置文本,因此在延迟结束后,动画开始立即更改文本,因为该更改不可设置动画。要执行您想要的操作,请按如下方式更改完成 block 中的文本:

    [UIView animateWithDuration:0.5
delay:4.0
options: UIViewAnimationOptionTransitionCrossDissolve
animations:^{ // anything animatable }
completion:^(BOOL finished) {
currentShapeNameLabel.text = @"New Text" ;}];

如果您希望动画立即开始,您可以消除延迟。如果您希望文本更改在动画完成后 4 秒发生,请使用 dispatch_after()performSelector:withDelay: 在完成 block 中添加该延迟。

关于ios - UIView的animateWithDuration延迟不延迟动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8245525/

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