gpt4 book ai didi

ios - UIViewControllerAnimatedTransitioning 与 UIStatusBarAnimation

转载 作者:可可西里 更新时间:2023-11-01 03:59:12 27 4
gpt4 key购买 nike

我在ViewController A中实现了这个方法

- (BOOL)prefersStatusBarHidden {
return NO;
}

我在 ViewController B 中实现了该方法

- (BOOL)prefersStatusBarHidden {
return YES;
}

- (UIStatusBarAnimation)preferredStatusBarUpdateAnimation {
return UIStatusBarAnimationSlide; // when doing hiding animation i want it to slide up
}

我实现了一个符合 viewController 转换的类 TAtoBTransition,我使用这个 ViewControllerTransition 从 vc(viewcontroller) A 转换到 vc B。当过渡到 vc B 我希望状态栏向上滑动(隐藏滑动动画) 但在这种情况下,它似乎不会执行滑动动画。

问题:假设我没有在 T 类中做 UIStatusBar 相关代码,也没有在 info 中添加值 View controller-based status bar appearance列表。转换 T 可以根据需要完美运行。

  1. 我确定代码通过断点或记录读取了 -preferredStatusBarUpdateAnimation 但为什么它没有通过滑动隐藏状态栏动画?当我在模拟器中切换到慢动作时。它似乎不做动画。

  2. 我的理论是它与过渡动画上下文冲突,因此是否可以在 T 的实现中将隐藏 UIStatusBar 的动画作为其过渡方案的一部分?

  3. 是否可以将 UIStatusBar 动画与 ViewControllerAnimationTransition 一起制作?

随意清除一些东西。提前谢谢.. :)

最佳答案

我认为您不能直接使用 iOS 7 的 View Controller 转换 API 来执行此操作。

现在,我假设基于此 API 和状态栏 API 的 Hook ,状态栏本身就是一种动物,不能用于自定义过渡动画。我认为是这种情况,因为当为您创建 UIViewControllerContextTransitioning transitionContext 时, View Controller A 已经添加到它的 containerView 并且因为您负责将 View Controller B 添加到containerView(因为您需要转换到它)当您这样做时,所有 View Controller B 的状态栏操作方法都会被触发。

但是,您可以在动画转换期间为UIApplicationkeyWindow 框架设置动画所以在-animateTransition 中: 实现 UIViewControllerAnimatedTransitioning 的类的方法。

[UIView animateWithDuration:[self transitionDuration:transitionContext] delay:0.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{

[UIApplication sharedApplication].keyWindow.frame = CGRectMake(0, 0, 320, 568); // move frame up

} completion:^(BOOL finished) {

// assuming
[UIApplication sharedApplication].keyWindow.frame = CGRectMake(0, 20, 320, 568); //move frame down
}];

如果您采用这种方法,您可能需要调整 View Controller A 中的关键窗口的框架,使其下降到状态栏下方,并根据需要设置亮/暗样式。然后在 View Controller B 中执行相反的操作以获得您想要的效果。它很讨厌,但它可以工作。

关于ios - UIViewControllerAnimatedTransitioning 与 UIStatusBarAnimation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24614215/

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