小编Gre*_*reg的帖子

禁用方向改变动画

我需要在最近更新到 iOS 16 的设备上禁用方向更改动画。

对于较旧的 iOS 版本,有一个防止动画的解决方案。使用以下方法禁用动画后,视图层次结构立即发生变化UIView

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {

   NSLog(@"breakpoint");

   [UIView setAnimationsEnabled:NO];

   [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
                    ///
            }
                completion:^(id<UIViewControllerTransitionCoordinatorContext> context) {
                    [UIView setAnimationsEnabled:YES];
            }];
}
Run Code Online (Sandbox Code Playgroud)

更新到 iOS 16 后,动画似乎在-viewWillTransitionToSize:withTransitionCoordinator:调用之前就开始了。例如,当我在上面的代码中添加断点时,在 iOS 15(及更早版本)上,窗口在到达断点之前将保持不变。在 iOS 16 中,屏幕会在遇到断点之前旋转到新方向。

永久设置[UIView setAnimationsEnabled:NO];,在应用程序启动时会取消其他动画,但方向更改动画仍然会发生。然而,如果永久禁用动画,方向变化动画看起来会更糟,就像只有视角(旋转)有动画,但比例/方面没有动画。

animation ios16

4
推荐指数
1
解决办法
874
查看次数

标签 统计

animation ×1

ios16 ×1