使用 NSAnimationContext 对自动布局进行动画处理只能在块内工作dispatch_after



我正在尝试使用 NSAnimationContext runAnimationGroup... 在 Mac 应用程序中对约束更改进行动画处理,但只有当我将其嵌入块中时,动画才能正常工作dispatch_after

结果我有这个代码:

__weak typeof(self) weakSelf = self;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.01 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    [weakSelf layoutSubtreeIfNeeded];
    [NSAnimationContext runAnimationGroup:^(NSAnimationContext *context){
        __strong typeof(weakSelf) strongSelf = weakSelf;
        context.duration = animated ? 0.3 : 0.;
        context.allowsImplicitAnimation = YES;
        strongSelf.expanded = NO;
        strongSelf.collapsingConstraint.priority = 900;
        [strongSelf layoutSubtreeIfNeeded];
    } completionHandler:^{
    }];
});

我做错了什么?提前感谢!

Dispatch_after将在主队列上执行该块。可能,没有它,您尝试不在主线程上制作动画。

您还可以检查如果将动画替换为dispatch_after,动画是否有效dispatch_async

相关内容

  • 没有找到相关文章

最新更新